Práce se seznamy. Operace na datových strukturách. Práce se seznamy del a insert. Práce se seznamy member. Seznam: rekurzivní datová struktura

Podobné dokumenty
Operace na datových strukturách

Operace na datových strukturách

Mocnina částečně uspořádané množiny

Evropská unie Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti


Technická kybernetika. Obsah



Koš Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď 1. 1 Které číslo doplníte místo otazníku? ?


Rovinné nosníkové soustavy Gerberův nosník

Přijímací řízení akademický rok 2011/12 Kompletní znění testových otázek matematický přehled



Rovinné nosníkové soustavy III Příhradový nosník


Obrázková matematika D. Šafránek Fakulta jaderná a fyzikálně inženýrská, Břehová 7, Praha 1


Nadměrné daňové břemeno

Model transformátoru v grafech signálových toků Jitka Mohylová Josef Punčochář

( ) ( ) ( ) Vzdálenost bodu od přímky II. Předpoklady: 7312


Rovinné nosníkové soustavy


Cvičebnice teorie grafů se zaměřením na problematiku toků v sítích

Technická dokumentace Ing. Lukáš Procházka

ŘEŠENÍ OBVODŮ S TRANSIMPEDANČNÍMI OPERAČNÍMI ZESILOVAČI POMOCÍ GRAFŮ SIGNÁLOVÝCH TOKŮ

Přijímací řízení akademický rok 2013/2014 NavMg. studium Kompletní znění testových otázek mikroekonomie

Koš Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď 1. 1 Které číslo doplníte místo otazníku: c

FUNKCE SINUS A KOSINUS

Otázka č. 4 (PRA): Za subjekty trestního řízení jsou považováni také:

4.5.5 Magnetické působení rovnoběžných vodičů s proudem

Rovinné nosníkové soustavy Gerberův nosník

Střední škola obchodu, řemesel, služeb a Základní škola, Ústí nad Labem, příspěvková organizace Vzdělávací středisko Trmice

á Í á č á Ó é á é ě ší Ý á á é é á á é á Í É á á é é é č é á š é š ď ď é ě é č é č ě ňá č é č é č ň š ě š ě á š ě á č ě č é č č ď ď ď ť Í Í é é ňě á Í

1 Logické řízení (prof. Ing. Jiří Tůma, CSc.)

Zlomky závěrečné opakování

Jak oslabit PC, aby algoritmus: neměl paměťové nároky PC, povede k vyřazení hodnoty z domény proměnné! e f. e f. a b. a b. byl silnější než AC?





6 Řešení soustav lineárních rovnic rozšiřující opakování

Solatube SolaMaster Série


é Ť č Ě á Ž á ě Ě á ě ň č ě ě ě á á á ě á á Í ž ě ě á ě é ž á ě é š Ě č ě č č á š á č Ť š áž Ž č á á č č Ž č é ě Ž š é á ž á š ě ě č ě š ž Ť č ž ě ž č

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky. Úloha č. 3. Student


Rovinné nosníkové soustavy II h=3


Kopie z

Box diagram výroby Hranice produkčních možností

Dynamické programování. Optimální binární vyhledávací strom


ověření Písemné ověření a ústní zdůvodnění




Trojkloubový nosník. Rovinné nosníkové soustavy


Konstrukce na základě výpočtu II

ZATĚŽOVACÍ ZKOUŠKY. Obr. 1. Statická zatěžovací zkouška; zatížení (N) zatlačení (cm)

Petriho sítě PES 2007/2008. Doc. Ing. Tomáš Vojnar, Ph.D.


ěří í á á ř í í á ý čá í ý í á í á č ř ří í ě á í ě ý š á ď ý ž ž á ěí í ží Í í ř á ě šíď ě ší Í í ž á Í č č ž é ž í í é ř Í ť á ž á í ř ř ť ě í á ž í


Ť ě Í Ú č č č š ťí č ž ě ž ě ě š ě ť ě ěť č ť ť č č ž Ť ě Ť š ě Ť ť ě ž Ť Í Ť š ň č š ě ě š ě Č š č č č čť Ť ě ě ňž č Ť Ý š ž ž š ě ěť ě ě ž ž ť ě ě Ť

klauzulí deklarativní (specifikace programu je přímo programem) popel, glum & nepil 1/18

ř ě ř ř ř ř ě ý šš č ř ť ž ě ň ě č ř ř ž ě ý š č ě š ř ý ř ž ě ž ř Ť ý ř ř ř ě ř ŮÝ ř ř ř Ž ý ó č ě š ř ý ú úč č ž ě š ř ř ý š ě ě ý č ř š š č ř ř š


ž č ňá Ť á áť š á ž é ž é ž ň Ť áť Ť š áť á é áť ň ž ž é č š é á é Ť á ň é á ž á á áť é č š á á á š Ů ž á č ž š š ž á á ž á é áň é š Ž š č ž č ň á ž á


1.3.6 Řešení slovních úloh pomocí Vennových diagramů I

4.4.1 Sinová věta. Předpoklady: Trigonometrie: řešení úloh o trojúhelnících.


7 Analytická geometrie

1. ÚPRAVY ALGEBRAICKÝCH VÝRAZŮ V REÁLNÉM OBORU 1.1. ZLOMKY A ABSOLUTNÍ HODNOTA


Půjdu do kina Bude pršet Zajímavý film. Jedině poslední řádek tabulky vyhovuje splnění podmínky úvodního tvrzení.

KEE / MS Modelování elektrických sítí. Přednáška 2 Modelování elektrických vedení



4.2.1 Goniometrické funkce ostrého úhlu

Konstrukce na základě výpočtu II


Teoretický rozbor vlivu deformací na záběr ozubených kol a modifikace ozubení





4.4.3 Kosinová věta. Předpoklady:

R zné algoritmy mají r znou složitost

1.3.5 Řešení slovních úloh pomocí Vennových diagramů II

TROJÚHELNÍK. JAN MALÝ UK v Praze a UJEP v Ústí n. L. sin α = b a.






{ } ( ) ( ) Vztahy mezi kořeny a koeficienty kvadratické rovnice. Předpoklady: 2301, 2508, 2507

Transkript:

Aleš Horák E-mil: hles@fi.muni.z http://nlp.fi.muni.z/uui/ Seznm: rekurzivní tová struktur uspořáná posloupnost prvků (liovolnýh termů včetně seznmů) operátor./; prázný seznm [].(Hlv,Tělo), lterntivně [Hlv Tělo], Hlv je (typu) prvek seznmu, Tělo je (typu) seznm Osh:.(,[]) [] [ []].(,.(,.(,[]))) [,,] [, []], [ [,]], [,, []], [ [, []]], [ [ [ []]]].(,.(.(,.(,[])),[])) [,[,]] [ [[,]]],...... [1,[[3,3],,e],f1]... Úvo o umělé inteligene /1 1 / 4 memer memer(+rvek,+seznm) true, poku v seznmu je zný prvek 1.. 3. memer(,[ ]). memer(,[ ]). je stručný zápis pro memer(,):-=[ ]. memer(,[ T]) :- memer(,t).? memer(,[,,]). = memer(,[ ]) :- ==. memer(,[ T]) :- memer(,t).? memer(,[,,]).? memer(,[,,]),write(ok),nl,fil. ok ok memer(,[ ]) :- ==. memer(,[ T]) :- \==, memer(,t).? memer(,[,,]),write(ok),nl,fil. ok Úvo o umělé inteligene /1 3 / 4 Úvo o umělé inteligene /1 / 4 el insert preikát el(+a,+,-vysl) smže všehny výskyty prvku A ze seznmu el1(+a,+,-vysl) smže vžy jeen (le poří) výskyt A v seznmu el(,[],[]).? el(1,[1,,1,1,,3,1,1],). el(a,[a T],V) :- el(a,t,v). = [,, 3] el(a,[h T1],[H T]) :- A\=H, el(a,t1,t).? el1(1,[1,,1],). el1(a,[a T],T). = [, 1] ; el1(a,[h T1],[H T]) :- el1(a,t1,t). = [1, ] ; insert(+a,+,-vysl) vkláá postupně (při žáosti o lší řešení) n všehny pozie seznmu prvek A insert1(+a,+,-vysl) vloží A n zčátek seznmu (ve výsleku Vysl) insert(a,,[a ]).? insert(4,[,3,1],). insert(a,[h T1],[H T]):- insert(a,t1,t). = [4,, 3, 1] ; = [, 4, 3, 1] ; = [, 3, 4, 1] ; insert1(,ist,[ ist]). = [, 3, 1, 4] ; Úvo o umělé inteligene /1 4 / 4

permute 1. pomoí insert perm1([],[]).? perm1([1,,3],). perm1([h T],):- perm1(t,v), insert(h,v,). = [1,, 3] ; = [, 1, 3] ; = [, 3, 1] ; = [1, 3, ] ; = [3, 1, ] ; = [3,, 1] ;. pomoí el1 perm([],[]). perm(,[ ]) :- el1(,,1),perm(1,). 3. pomoí ppen perm3([],[]). perm3(,[h T]):- ppen(a,[h B],),ppen(A,B,1), perm3(1,t). Úvo o umělé inteligene /1 5 / 4 využití ppen preikát ppen je všestrnně použitelný: memer(,s) lst(,s) prefix(s,s) suffix(s,s) sulist(s,assbs) jent(,,zs) :- ppen(as,[ s],s). :- ppen(as,[],s). :- ppen(s,as,s). :- ppen(as,s,s). :- ppen(ass,bs,assbs), ppen(as,s,ass). :- ppen(as,[, s],zs). ppen ppen(?seznm1,?seznm,?seznm) Seznm je spojení seznmů Seznm1 Seznm ppen([],,). ppen([h T1],,[H T]) :- ppen(t1,,t). preikát ppen je víesměrný:? ppen([,],[,],). = [,,, ]? ppen(,[,],[,,,]). = [, ]? ppen(,,[,,]). = [] = [,, ]; = [] = [, ]; = [, ] = []; = [,, ] = []; Úvo o umělé inteligene /1 6 / 4 efektivit ppen Efektivní řešení preikátu ppen rozílové seznmy (ifferene lists) Rozílový seznm se zpisuje jko Seznm1-Seznm. Npř.: [,,]... [,,] - [] neo [,,,] - [] neo [,,,,e] - [,e], oeně [,, ] - []... A-A []... [ A]-A Seznm (volná proměnná) slouží jko ukztel n kone seznmu Seznm1 preikát ppen s rozílovými seznmy (ppen l): ppen l(a B,B C,A C).? ppen l([, ],[, ],Z). = [, ] = Z = [,,, ] Úvo o umělé inteligene /1 7 / 4 Úvo o umělé inteligene /1 8 / 4

Tříění seznmů Tříění seznmů Tříění seznmů quiksort Tříění seznmů quiksort preikát qsort(+,-vysl) tříí seznm tehnikou rozěl pnuj prvky 5 M=[3,1,4], qsort(m) M1=[1,3,4] =[5,3,7,8,1,4,7,6] T=[3,7,8,1,4,7,6] Vysl=[1,3,4,5,6,7,7,8] prvky > 5 V=[7,8,7,6], qsort(v) V1=[6,7,7,8] Úvo o umělé inteligene /1 9 / 4 Tříění seznmů quiksort II Tříění seznmů =[H T],H=5 ivie(5,...) ppen - M1.[5].V1 preikát qsort(+,-vysl) tříí seznm tehnikou rozěl pnuj qsort([],[]) :-!. % řez zho lší možnosti řešení qsort([h],[h]) :-!. qsort([h T],) :- ivie(h,t,m,v), qsort(m,m1), qsort(v,v1), ppen(m1,[h V1],). ivie(,[],[],[]) :-!. ivie(h,[k T],[K M],V) :- K=<H,!, ivie(h,t,m,v). ivie(h,[k T],M,[K V]) :- K>H, ivie(h,t,m,v). Úvo o umělé inteligene /1 10 / 4 Uspořáné inární stromy Uspořáné inární stromy preikát qsort l(+,-vysl) efektivnější vrint preikátu qsort s rozílovými seznmy Reprezente inárního stromu: nil prázný strom Hon qsort(,s):- qsort l(,s []). qsort l([],a A). qsort l([h T],A B):- ivie(h,t,m,v), qsort l(v,a1 B), qsort l(m,a [H A1]). % ppen l(a [H A1],A1 B,A B) ivie(,[],[],[]):-!. ivie(h,[k T],[K M],V):- K=<H,!, ivie(h,t,m,v). ivie(h,[k T],M,[K V]):- K>H, ivie(h,t,m,v). t(,hon,) strom říkly stromů: t(nil,8,nil) 8 t(t(nil,1,nil),,t(nil,3,nil)) 1 3 t(nil,,t(t(nil,3,nil),4,t(nil,5,nil))) 4 3 5 Úvo o umělé inteligene /1 11 / 4 Úvo o umělé inteligene /1 1 / 4

řiávání o inárního stromu řiávání o inárního stromu lef(+t,+,-vysl) přiá o inárního stromu T honotu n správnou pozii vzhleem k setříění stromu reikát lef není víesměrný nelze efinovt: lef(nil,,t(nil,,nil)). lef(t(eft,,right),,t(eft,,right)). lef(t(eft,root,right),,t(eft1,root,right)) :- Root>,lef(eft,,eft1). lef(t(eft,root,right),,t(eft,root,right1)) :- Root<,lef(Right,,Right1).? lef(nil,6,t),lef(t,8,t1), lef(t1,,t), lef(t,4,t3), lef(t3,1,t4). T4 = t(t(t(nil, 1, nil),, t(nil, 4, nil)), 6, t(nil, 8, nil))? lef(t(t(t(nil,1,nil),,t(t(nil,3,nil),4,t(nil,5,nil))), 6,t(t(nil,7,nil),8,t(nil,9,nil))), 10, T). T = t( t( t(nil, 1, nil),, t( t(nil, 3, nil), 4, t(nil, 5, nil))), 6, t( t(nil, 7, nil), 8, t( nil, 9, t(nil, 10, nil)))) el(t,,t1) :- lef(t1,,t). A elete() A? Úvo o umělé inteligene /1 13 / 4 Úvo o umělé inteligene /1 14 / 4 správný postup: poku je oeírná honot v listu nhrí se honotu nil jestliže je le v kořenu (po)stromu je nutné tento (po)strom přestvět řestv inárního stromu při ostrňování kořene : ( ) ellef(+t,+,-vysl) ostrní ze stromu T uzel s honotou ellef(t(nil,,right),,right). ellef(t(eft,,nil),,eft). ellef(t(eft,,right),,t(eft,,right1)):- elmin(right,,right1). ellef(t(eft,root,right),,t(eft1,root,right)):- <Root,ellef(eft,,eft1). ellef(t(eft,root,right),,t(eft,root,right1)):- >Root,ellef(Right,,Right1). elmin(t(nil,,r),,r). elmin(t(eft,root,right),,t(eft1,root,right)) :- elmin(eft,,eft1). Úvo o umělé inteligene /1 15 / 4 Úvo o umělé inteligene /1 16 / 4

Jiný způso vkláání: > (?T,+,?Vysl) přiá o inárního stromu T uzel s honotou s přeuspořááním stromu (jko kořen neo jinm při nvrení) + < 1 1 % přiej jko kořen (T,,T1) :- root(t,,t1). % neo kmkoliv o stromu (se zhováním uspořáání) umožní mzání (t(,,r),,t(1,,r)) :- gt(,),(,,1). (t(,,r),,t(,,r1)) :- gt(,),(r,,r1). root(nil,,t(nil,,nil)). root(t(,,r),,t(1,,t(,,r))) :- gt(,),root(,,t(1,,)). root(t(,,r),,t(t(,,r1),,r)) :- gt(,),root(r,,t(r1,,r)). root(t(,,r),,t(,,r)). Definie preikátu gt(,) n konečném uživteli. Funguje i oráeně lze efinovt: el(t,,t1) :- (T1,,T). Úvo o umělé inteligene /1 17 / 4 Výpis inárního stromu Výpis inárního stromu pomoí oszení zorzujeme úroveň uzlu ve stromu elkové uspořáání uzlů (strom je tey zorzen nležto ) t( t( 5, t( t(nil,1,nil), 3, t(nil,4,nil)), t(nil,6, t(nil,7,nil)), 8, t(nil,9,nil))) 1 show(+t) vypíše osh uzlů stromu T se správným oszením show(t) :- show(t,0). show(nil, ). show(t(,,r),inent) :- In is Inent+,show(R,In),t(Inent), write(),nl,show(,in). Úvo o umělé inteligene /1 19 / 4 5 8 3 9 6 4 1 7 5 8 3 9 6 4 7 Úvo o umělé inteligene /1 18 / 4 říkly způsoů reprezente grfů (v rologu): 1 term grph(v,e), ke V je seznm vrholů grfu E je seznm hrn grfu. Kžá hrn je tvru e(v1,v), ke V1 V jsou vrholy grfu. G = grph([,,,],[e(,),e(,),e(,),e(,)]). znázorňuje orientovný grf Úvo o umělé inteligene /1 0 / 4

Cesty v grfeh vgrph(v,e) efinuje uspořánou vojii seznmů vrholů (V) hrn (E). Hrny jsou tvru (oteniv, KonovyV, CenHrny). t G = vgrph([s,t,u,v],[(s,t,3),(t,v,1), (t,u,5),(u,t,),(v,u,)]). u znázorňuje orientovný ohonoený grf 3 grf může ýt uložen v progrmové tázi jko posloupnost fktů (i prviel). ege(g3,,). ege(g3,,). ege(g3,,). ege(g3,,). ege(,a,b) :- ege(,b,a). s 3 1 íky přinému prvilu přestvuje neorientovný grf (ez prvil je orientovný). Úvo o umělé inteligene /1 1 / 4 Cesty v grfeh 5 v Cesty v grfeh Cest v neorientovném grfu: pth(+a,+z,+grf,-cest) v grfu Grf nje z vrholu A o vrholu Z estu Cest (Grf je ve tvru 1). pth(a,z,grf,cest) :- pth1(a,[z],grf,cest). pth1(a,[a Cest1],,[A Cest1]). pth1(a,[ Cest1],Grf,Cest) :- jent(,,grf), \+ memer(,cest1), pth1(a,[, Cest1],Grf,Cest). \+ Cíl nege, not jent(,,grph(es,eges)) :- memer(e(,),eges);memer(e(,),eges). Úvo o umělé inteligene /1 / 4 Kostr grfu Cesty v grfeh II. Kostr grfu Cest v ohonoeném neorientovném grfu: pth(+a,+z,+grf,-cest,-cen) hleá liovolnou estu z jenoho vrholu o ruhého její enu v ohonoeném neorientovném grfu. Kostr grfu je strom, který prohází všehny vrholy grfu jehož hrny jsou zároveň hrnmi grfu. stree(grph,tree) :- memer(ege,grph),spre([ege],tree,grph). pth(a,z,grf,cest,cen) :- pth1(a,[z],0,grf,cest,cen). pth1(a,[a Cest1],Cen1,Grf,[A Cest1],Cen1). pth1(a,[ Cest1],Cen1,Grf,Cest,Cen) :- jent(,,cen,grf), \+ memer(,cest1), Cen is Cen1+Cen, pth1(a,[, Cest1],Cen,Grf,Cest,Cen). jent(,,cen,grf) :- memer( /Cen,Grf);memer( /Cen,Grf). Grph je seznm hrn ve tvru -/Cen (viz jent). Úvo o umělé inteligene /1 3 / 4 spre(tree1,tree,grph) :- ege(tree1,tree,grph), spre(tree,tree,grph). spre(tree,tree,grph) :- \+ ege(tree,,grph). % nelze přit hrnu % přiej hrnu ez vzniku yklu ege(tree,[a B Tree],Grph) :- jent(a,b,grph),noe(a,tree), \+ noe(b,tree). jent(a,b,grph) :- memer(a B,Grph);memer(B A,Grph). noe(a,grph) :- jent(a,,grph).? stree([,,, ],T). T = [,, ] Úvo o umělé inteligene /1 4 / 4