Кук-Јангер-Касами алгоритам

From Wikipedia, the free encyclopedia

Remove ads
Remove ads

Кук-Јангер-Касами алгоритам () је алгоритам који служи за одређивање припадности неке речи контекстно слободном језику A (тип 2 у класификацији Чомског), тј:

Овај алгоритам спада у методе синтаксичке анализе које омогућавају анализирање било које контекстно слободне граматике. У основи, овом методом се, почетно од стартног симбола граматике, анализирају сва могућа извођења, док се не утврди да ли реч припада језику или не. Уколико се утврди да припада језику, овај алгоритам омогућава и увид у начин на који је реч изведена. Стандардни алгоритам анализира КС граматике које су дате у нормалној форми Чомског. Ипак, како се свака контекстно слободна граматика може превести у овај облик, метода је применљива на све КСГ. Постоје и проширења алгоритма којима се могу анализирати граматике које нису у нормалној форми Чомског.

алгоритам спада у ефикасније алгоритме синтаксичке анализе који имају широку применљивост. Сложеност алгоритма је полиномска и спада у класу (због три угнежђене петље), где је дужина анализиране ниске. Наравно, постоје и методе линеарне сложености, али су оне применљиве само на неке поткласе КСГ. Алгоритам припада парадигми динамичког програмирања.

Remove ads

Алгоритам

Имплементација динамичким програмирањем:


Улаз: карактери а1.... аn од којих се састоји задата ниска, симболи задате
граматике:  терминала и нетерминали  ... , где је 1 почетни симбол
Излаз: одговор да ли ниска припада језику граматике
{ локалне варијабле: 
          (бројачке променљиве)
         матрица логичких вредности  (на почетку сваки елемент матрице има вредност 0)
         (током рада алгритма  ће постати 1 ако подниска улазне ниске од позиције 
          на дужини  може да се генерише из r) 
    (узећемо да је први елемент , а не  ) 
     за свако правило граматике  поставити ;
    (скенира се улазна ниска, а за свако )      
      (прегледа се префикс ниске дужине ) 
         (извођење из правила граматике)
            за свако правило  
                
                 (тј. ако је правило  такво да се из  може генерисати 
                 подниска дужине  почев од позиције , и из  се може генерисати 
                 подниска дужине  почев од позиције , онда се из  може
                 генерисати подниска дужине  почев од позиције , тј. )

  'ниска је члан језика'
  'ниска није члан језика'
}
Remove ads

Модификације алгоритма и примене

  • Ради конструкције дрвета извођења, алгоритам се може модификовати тако да елементи матрице не буду логичке вредности него чворови дрвета извођења. Како граматика може бити вишезначна, неопходно је памтити у матрици заправо листу чворова, а резултат ће бити не само једно дрво, већ читав низ могућих стабала.
  • Теоретски значај алгоритма лежи у могућности да се користи као конструктиван доказ да је проблем припадности КСЈ одлучив.
  • Ради синтаксичке анализе стохастичких КСГ(СКСГ), алгоритам се може модификовати тако да елементи матрице не буду логичке вредности, већ вероватноће. СКСГ су КСГ у којима се свака примена правила обавља уз неку вероватноћу; тачније, вероватноћа извођења је производ вероватноћа правила која се користе у тим извођењима. СКСГ се користе у области (обрада природних језика) и проучавања молекула у биоинформатици.
Remove ads

Види још

Литература

  • Скрипта за предмет „Информатика 3“, УНИ Карлсруе, Петер Сандерс
  • Витас, Душко М. (2006). Преводиоци и интерпретатори (Увод у теорију и методе компилације програмских језика). Београд: Математички факултет.

Спољашње везе

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads