Redigerer
CYK-algoritmen
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Cocke-Younger-Kasami-algoritmen''', vanligvis omtalt som '''CYK-algoritmen''', er en [[algoritme]] som bestemmer hvorvidt en [[Streng (informatikk)|streng]] kan genereres av en gitt [[kontekstfri grammatikk]] og, i så fall, hvordan den kan genereres. Dette kalles å [[Parsing|parse]] en streng. Algoritmen tar i bruk [[bottom–up-parsing]] og [[dynamisk programmering]]. Standardversjonen av CYK-algoritmen opererer på kontekstfrie grammatikker gitt på [[Chomsky normalform]] (CNF), som en hvilken som helst konteksfri grammatikk kan omgjøres til. CYK-algoritmen er viktig fordi den beviser at medlemskapsproblemet for kontekstfrie grammatikker er løsbart, og fordi den gjør det på en så effektiv måte. Uttrykt med [[stor O-notasjon]] er den lengste mulige kjøretida for CYK-algoritmen <math>\Theta(n^3 \cdot |G|)</math>, hvor ''n'' er lengden av den parsa strengen og |''G''| størrelsen på CNF-grammatikken ''G''. Algoritmen ble oppdaga av de tre som den har fått navnet sitt etter, uavhengig av hverandre: Cocke og Schwartz i 1970, Younger i 1967 og Kasami i 1965. ==Beskrivelse== Den opprinnelige CYK-algoritmen kan beskrives med følgende [[pseudokode]]: '''La''' innputt være en streng ''S'' bestående av ''n'' tegn: ''a''<sub>1</sub> ... ''a''<sub>''n''</sub>. '''La''' grammatikken inneholde ''r'' ikke-terminalsymboler ''R''<sub>1</sub> ... ''R''<sub>''r''</sub>. Denne grammatikken inneholder delmengden ''R''<sub>''s''</sub>, som er mengden startsymboler. '''La''' ''P''[''n'',''n'',''r''] være en array av booleanske verdier. Sett alle elementenes ''P''-verdi til false. '''For hver''' ''i'' = 1 til ''n'' '''For hver''' enhetsproduksjon ''R''<sub>''j''</sub> → ''a''<sub>''i''</sub>, '''sett''' ''P''[''i'',1,''j''] = true. '''For hver''' ''i'' = 2 til ''n'' ''-- Spanlengden'' '''For hver''' ''j'' = 1 til ''n''-''i''+1 ''-- Spanstart'' '''For hver''' ''k'' = 1 til ''i''-1 ''-- Spanoppdeling'' '''For hver''' produksjon ''R''<sub>''A''</sub> → ''R''<sub>''B''</sub> ''R''<sub>''C''</sub> '''Hvis''' ''P''[''j'',''k'',''B''] og ''P''[''j''+''k'',''i''-''k'',''C''] '''så''' sett ''P''[''j'',''i'',''A''] = true '''Hvis''' minst én av ''P''[1,''n'',''x''] er true (''x'' itereres over settet ''s'', hvor ''s'' er alle indeksene for ''R''<sub>''s''</sub>) '''Så''' er ''S'' medlem av språket '''Ellers''' er ''S'' ikke medlem av språket ==Eksterne lenker== * [https://web.archive.org/web/20091019113531/http://homepages.uni-tuebingen.de/student/martin.lazarov/demos/cky.html CYK-parsing-demo i JavaScript] {{Språkikon|en|Engelsk}} * [https://web.archive.org/web/20090401210244/http://www.informatik.uni-leipzig.de/alg/lehre/ss08/AUTO-SPRACHEN/Java-Applets/CYK-Algorithmus.html Interaktivt program fra Universitetet i Leipzig som demonstrerer CYK-algoritmen] {{Språkikon|de|Tysk}} {{Autoritetsdata}} [[Kategori:Algoritmer]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Språkikon
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon