Поиск в ширину - Prolog

Узнай цену своей работы

Формулировка задачи:

Пытаюсь запустить следующий код из Братко:
Листинг программы
  1. после(a,b).
  2. после(b,d).
  3. после(d,h).
  4. после(b,e).
  5. после(e,i).
  6. после(e,j).
  7. после(a,c).
  8. после(c,f).
  9. после(f,k).
  10. после(c,g).
  11. цель(j).
  12. решить( Старт, Решение) :-
  13. вширину( [ [Старт] ], Решение).
  14. вширину( [ [Верш | Путь] | _ ], [Верш | Путь] ) :-
  15. цель( Верш).
  16. вширину( [ | Путь] | Пути], Решение ) :-
  17. bagof( [B1, В | Путь ],
  18. ( после( В, В1), not принадлежит( В1, | Путь])),
  19. НовПути),
  20. % НовПути - ациклические продолжения пути | Путь]
  21. конк( Пути, НовПути, Пути1), !,
  22. вширину( Путь1, Решение);
  23. вширину( Пути, Решение).
Выдает False. Не пойму в чем дело. Помогите пожалуйста разобраться. В глубину все работает. Вот если что ссылка на книгуhttp://coollib.com/b/183629/read
в глубину вот:
Листинг программы
  1. решить( В, [В] ) :-
  2. цель( В).
  3. решить( В, | Реш1] ) :-
  4. после( В, В1 ),
  5. решить( В1, Реш1).
Это работает.

Решение задачи: «Поиск в ширину»

textual
Листинг программы
  1. после(a,b).
  2. после(b,d).
  3. после(d,h).
  4. после(b,e).
  5. после(e,i).
  6. после(e,j).
  7. после(a,c).
  8. после(c,f).
  9. после(f,k).
  10. после(c,g).
  11. цель(j).
  12.  
  13.  решить( Старт, Решение) :-
  14.  
  15.                 вширину( [ [Старт] ], Решение).
  16.  
  17.         вширину( [ [Верш | Путь] | _ ], [Верш | Путь] ) :-
  18.  
  19.                 цель( Верш).
  20.  
  21.         вширину( [ | Путь] | Пути], Решение ) :-
  22.  
  23.                 bagof( 1, В | Путь ],
  24.  
  25.                 ( после( В, В1), not(member( В1, | Путь]))),
  26.  
  27.                 НовПути),
  28.  
  29.                         % НовПути - ациклические продолжения пути | Путь]
  30.  
  31.                 append( Пути, НовПути, Пути1),  !,
  32.  
  33.                 вширину( Пути1, Решение);
  34.  
  35.                 вширину( Пути, Решение).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут