Turingov stroj
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Turingov stroj
Potreboval by som vysvetlit (najslesie po slovensky), ako turingov stroj respektive zasobnikovy automat pocita, zlozitejsie alegebraicke vyrazy (zatvorky, logaritmy ,premenne... ) , najlepsie aj z peknymi obrazkami.
Nieco som uz naprogramoval, ale vyrazy vycisluje rekurzivne a nesplnuje vetcinu mojich pozidaviek.
Nieco som uz naprogramoval, ale vyrazy vycisluje rekurzivne a nesplnuje vetcinu mojich pozidaviek.
Re: Turingov stroj
no pracoval si uz niekedy s FloatingPointUnit? tak sa to davalo do zasobniku pricom posledna pridana hodnota bola nazaciatku a potom tam boli operacie ktore si vytiahli tolko hodnot pre kolko boli naprogramovane a miesto nich priradilo vyslednu hodnotu to myslis?
az ten zdrojak nieje statne tajomstvo tak pasti usek ktory ti nefunguje presne
az ten zdrojak nieje statne tajomstvo tak pasti usek ktory ti nefunguje presne
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Turingov stroj
máš zásobník (to znamená že čo prvé príde, to posledné odchádza). Príde pravá zátvorka, pridá sa do zásobnika. Príde lavá, odstráni sa pravá zo zásobnika (všetky tieto pravidlá musíš mať popísané v danej gramatike). Tento stroj potom oproti bežnému TS akceptuje okrem koncového stavu aj prázdnym zásobníkom. Myslím že na internete je toho kopec popísaného, asi by bolo lepšie vysvetliť na konkrétnom príklade ak si sa na nejakom zasekolharrison314 napísal:Potreboval by som vysvetlit (najslesie po slovensky), ako turingov stroj respektive zasobnikovy automat pocita, zlozitejsie alegebraicke vyrazy (zatvorky, logaritmy ,premenne... ) , najlepsie aj z peknymi obrazkami.
Nieco som uz naprogramoval, ale vyrazy vycisluje rekurzivne a nesplnuje vetcinu mojich pozidaviek.
-
axxis
Addict
- Príspevky: 3690
- Registrovaný: 29 máj 2007, 21:53
- Bydlisko: Spálené mlyny
- Kontaktovať používateľa:
Re: Turingov stroj
zda sa mi, ze si to trochu poplietol. Turingov stroj predsa ziadnu gramatiku nepotrebuje a okrem toho prechody cez Epsilony vie zovseobecneny automat ( ci uz deterministicky alebo nedeterministicky ), turingov stroj ,na rozdiel od inych automatov, sa vyznacuje tym, ze ma nekonecnu pasku a vie po nej chodit zlava doprava aj naopak + dokaze vymazavat obsah pasky. a zlozite vyrazy vie riesit jedine spravnym usporiadanim stavov a prechodov medzi nimi
vid toto od strany 27
vid toto od strany 27
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Turingov stroj
pásku v TS môžeš používať rovnako ako zásobník v PDA. On ale nepotrebuje vytvoriť gramatiku, on potrebuje konkrétnu implementáciu prostredníctvom TS. A tú spraví práve tak ako som mu písal.
Ale hej, TS potrebuje jazyk a nie gramatiku. Jazyk je ale popísaný gramatikou... a asi sa nebudeme môcť chytať za slovíčka lebo sa nedočká odpovede
Ale hej, TS potrebuje jazyk a nie gramatiku. Jazyk je ale popísaný gramatikou... a asi sa nebudeme môcť chytať za slovíčka lebo sa nedočká odpovede
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Turingov stroj
Takze kde som sa zasekol:
Moj program funguje dobre , len zvlada zatvorky,+,-,*,/,^ , nezvlada unarne operacie.
Mam spraveny lexikalny analizator, ktori vyraz premeni na pole oprantov a hodnot, potom metody ktore ho spracuju rekurzivne ( ak najde zatvorku posunie sa zani a zavola sama seba a vysledok pouzije ako operant, ...), mozem upnut zdrojaky v C++.
Problem nastal, ked som chcel doplnit obycajny logaritmus ln( .... );.
Chcel by som sa postupne dopracovat az k tomu aby som mohol zaviest uzivatelom deklarovane premenne,viac vyrazov v matematickom "skrypte" s priradenim a funkcie ( nie definovane uzivatelom), ktore by mali viac parametrov.
Povodne som ani neuvazoval o klasickom TS , ale skor o nejakom automate ktory sa mu podoba, citacou hlavou by behal po vyraze a hladal by opracie z najvysou prioritou tie by vyhodnotil a nahradil ich hodnotou, takto by pokracoval pokial by ho nevypocital.
Ale tiez som narazil na dost zlozitu rekurzivnost.
Moj program funguje dobre , len zvlada zatvorky,+,-,*,/,^ , nezvlada unarne operacie.
Mam spraveny lexikalny analizator, ktori vyraz premeni na pole oprantov a hodnot, potom metody ktore ho spracuju rekurzivne ( ak najde zatvorku posunie sa zani a zavola sama seba a vysledok pouzije ako operant, ...), mozem upnut zdrojaky v C++.
Problem nastal, ked som chcel doplnit obycajny logaritmus ln( .... );.
Chcel by som sa postupne dopracovat az k tomu aby som mohol zaviest uzivatelom deklarovane premenne,viac vyrazov v matematickom "skrypte" s priradenim a funkcie ( nie definovane uzivatelom), ktore by mali viac parametrov.
Povodne som ani neuvazoval o klasickom TS , ale skor o nejakom automate ktory sa mu podoba, citacou hlavou by behal po vyraze a hladal by opracie z najvysou prioritou tie by vyhodnotil a nahradil ich hodnotou, takto by pokracoval pokial by ho nevypocital.
Ale tiez som narazil na dost zlozitu rekurzivnost.
Re: Turingov stroj
nemyslim ze by si mal pouzivat rekurzie ved kludne to mozes spravit ako strom ze listy budu hodnoty a jeho konare alebo proste tie vnutorne uzly budu tie operatory a napriklad unarny x++ mozes definovat ako x+1 a ked najde napriklad L tak sa zapne automat pre funkcie a ten sa bude snazit prijat potom n zatvorku a potom ten vyraz vnutri a ked narazi na ) tak cely ten vyraz preda automatu na vyssej urovni
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Turingov stroj
áno, to si práve popísal rekurziu ^ 
Re: Turingov stroj
alebo skor volanie inych funkcii z nie tej istej ci?
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Turingov stroj
Ako s toho spravim strom ,mudrlant ? Ako vstup mam text. Len ci to nebude zlozitejsie ako to rovno zinterperovat.juho napísal:nemyslim ze by si mal pouzivat rekurzie ved kludne to mozes spravit ako strom ze listy budu hodnoty a jeho konare alebo proste tie vnutorne uzly budu tie operatory a napriklad unarny x++ mozes definovat ako x+1 a ked najde napriklad L tak sa zapne automat pre funkcie a ten sa bude snazit prijat potom n zatvorku a potom ten vyraz vnutri a ked narazi na ) tak cely ten vyraz preda automatu na vyssej urovni
Hlavnym mojim problemmom je spravne urcit prioritu vsetkych poratorov,oprandov a funkcii, co nie je take jednoduche ako si napisal.
Rekurzia sa tu pouziva zlozena , zavolam funkciu A , ta vola funkciu B, B vola B aj A.
A unarny opertaor je aj faktorial, ale hlavne minus pred cislom !
Re: Turingov stroj
tak ty mudrlant ja mudrlant ..nc.nc.nc.. z textoveho vstupu si vytvoris lexemy podla delimitrov tym priradis preddefinovane tokenove cisla a z toho spracovavas dalej a priradujes do stromu alebo vsuvas do zasobnika a vykonavas operacie ci?
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Turingov stroj
Nakoniec som to vyreisil vylepsenim Lexikalneho analizatora a rekurziov, takto :
Lexikalny nalizator spravy z jednotlivych veci pole, kde su vsetky potrebne veci, ako je typ (zatvorka, cislo, premnna), ukazovatel na funkciu ak sa jedna o funkciu, ....
Lexikalny analizator sa stara aj o vytvaranie a deklaraciu premnnych.
Potom mam 4 funkcie na interpertaciu:
1.uroven - stara sa o priradenie
2.uroven je +,-
3.uroven *,/
4.uroven hodnota,premenna,funkcia,zatvorky ... a podla potreby vola 1.uroven
Pricom kazda uroven vola tu nizsiu.
Je dost zaujimave ze to zvlada aj dost krkolomne zapisi.
Ale este je natom vela prace.
Este vymsliet if a while , to bude trapenie.
Lexikalny nalizator spravy z jednotlivych veci pole, kde su vsetky potrebne veci, ako je typ (zatvorka, cislo, premnna), ukazovatel na funkciu ak sa jedna o funkciu, ....
Lexikalny analizator sa stara aj o vytvaranie a deklaraciu premnnych.
Potom mam 4 funkcie na interpertaciu:
1.uroven - stara sa o priradenie
2.uroven je +,-
3.uroven *,/
4.uroven hodnota,premenna,funkcia,zatvorky ... a podla potreby vola 1.uroven
Pricom kazda uroven vola tu nizsiu.
Je dost zaujimave ze to zvlada aj dost krkolomne zapisi.
Ale este je natom vela prace.
Este vymsliet if a while , to bude trapenie.