![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
kosyak |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 100 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго всем времени суток. Помогите разобраться с задачей: "определение цикла Гамильтона в заданном графе". Язык prolog. Какой может быть алгоритм, где можно об этом попонятней почитать? Может есть уже готовая))) На pascalе бы быстро все сделал, а вот с логическим программированием пока проблемы.
Заранее огромное спасибо. |
![]() ![]() |
kosyak |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 100 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все, вроде сделал:
Код domains top=symbol Vlist=top* rebro=rebro(top,top) Rlist=rebro* gr=graf(Vlist,Rlist) predicates path(top,top,Vlist,Vlist,gr) memberV(top,Vlist) memberR(rebro,Rlist) gamil(gr,Vlist) allV(top,Vlist) clauses gamil(G,P):- G=graf(Vlist,Rlist), P=[A|V], path(A,B,[A],V,G), memberR(rebro(B,A),Rlist), allV(X,V). path(A,B,V,[B|V],graf(Vlist,Rlist)):- memberR(rebro(A,B),Rlist), not(memberV(B,V)). path(A,B,V,V2,graf(Vlist,Rlist)):- memberR(rebro(A,N),Rlist), not(memberV(N,V)), V1=[N|V], path(N,B,V1,V2,graf(Vlist,Rlist)). allV(X,L):- memberV(X,L). memberV(A, [A|_]). memberV(A, [_|L]):-memberV(A,L). memberR(A, [A|_]). memberR(A, [_|L]):-memberR(A,L). только вот почему он выводить несколько раз одно и тоже решение?? непонятно |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 3:36 |