Diff for ''
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| <div style="clear: right; float: right; line-height: 1.4; margin: 0 0 1em 1em; width: 16em; border: 1px solid #aaa;"> {| class="wikitable" style="font-size: 85%; margin-top: 0; width: 100%;" |- | style="font-size: 120%; font-weight: bold; text-align: center; background: #def;" |Prednášky z [[Vyčíslitelnost II_|Vyčísliteľnosti II]] |- !Obsah |- || *[[TIN065 Prehľad|Prehľad]] *[[TIN065 Prednáška 01|Prvá prednáška]] *[[TIN065 Prednáška 02|Druhá prednáška]] *[[TIN065 Prednáška 03|Tretia prednáška]] *[[TIN065 Prednáška 04|Štvrtá prednáška]] *[[TIN065 Prednáška 05|Piata prednáška]] *[[TIN065 Prednáška 06|Šiesta prednáška]] *[[TIN065 Prednáška 07|Siedma prednáška]] *[[TIN065 Prednáška 08|Ôsma prednáška]] *[[TIN065 Prednáška 09|Deviata prednáška]] *[[TIN065 Prednáška 10|Desiata prednáška]] *[[TIN065 Prednáška 11|Jedenásta prednáška]] *Dvanásta prednáška *[[TIN065 Zhrnutie|Zhrnutie na skúšku]] |} </div> |
# Příklad do prologu <{ForumPost(poster="wweennddeell", timestamp=2010-06-28 22:20:08)}> Dobrý den, potřeboval bych pomoct naprogramovat úlohu v prologu. Hledal jsem nějaké řešení na internetu, ale nic jsem nenašel a absolutně si s tím nevím rady. Úloha zní takto: Na vstupu je zadán graf, který obecně není stromem. Napište program v jazyce Prolog, který vytiskne pro zadaný uzel grafu všechny cykly grafu, jichž je daný uzel prvkem. Budu rád za každou Vaši pomoc... <{/ForumPost}> <{ForumPost(poster="H8me", timestamp=2010-06-29 17:12:28)}> Zdarec, co to to ? Je to pre orientovany graf. %graf je zoznam hran v tvare h(X,Y) vsetkyCykly(Hrany,X,Out):-findall(C,(cyklus(Hrany,X,X,[],C),length(C,Len),Len > 1),Out). cyklus(_,X,X,Akum,Akum). cyklus(Hrany,X,Y,Akum,Out):-member(h(Y,N),Hrany), not(member(N,Akum)), cyklus(Hrany,X,N,[N|Akum],Out). <{/ForumPost}> <{ForumPost(poster="wweennddeell", timestamp=2010-06-29 23:05:55)}> Díky moc za snahu. Ten prolog je pro mě kámen úrazu. Jestli sem to dobře pochopil, tak mám například tyto hrany: h(b,c). h(f,c). h(g,h). h(d). h(f,b). h(k,f). h(h,g). Co mám teda napsat za vstupní podmínku, aby mi prolog vypsal všechny cykly třeba uzlu f (i když v tomhle příkladu je pouze jeden cyklus). Řešení sem našel na téhle stránce: [https://prof.ti.bfh.ch/hew1/informatik3/prolog/p-99/](https://prof.ti.bfh.ch/hew1/informatik3/prolog/p-99/) .Příklad P82 by měl být přesně ten, co hledám, bohužel vůbec nevím jak ten program mám z toho sestavit. <{/ForumPost}> <{ForumPost(poster="H8me", timestamp=2010-06-29 23:25:14)}> Neviem co ma vyjadrovat h(d) ale ked to preskocim tak dotaz pre tvoj priklad by vyzeral takto: vsetkyCykly(\[h(f,c),h(g,h),h(f,b),h(k,f),h(h,g)],f,Out). Out je volna premenna, ta vrati zoznam cyklov. A to riesenie co si postol funguje na tom istom principe, tiez vyhladava cesty v grafe zo zaciatkom aj koncom v tom istom bode. <{/ForumPost}> <{ForumPost(poster="Andrew24", timestamp=2015-01-12 13:58:54)}> Mohl by mi prosím někdo poradit jak by to vypadalo kdyby se měly na konci vypsat všechny cykly jichž daný uzel **neni** prvkem? díky <{/ForumPost}> |