Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Найти путь в ориентированном графе
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
anastasia05 anastasia05 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.10.2014
По умолчанию Найти путь в ориентированном графе - 13.10.2014, 23:25

Здравствуйте,
помогите, пожалуйста, решить задачу:
Дан список взвешенных дуг ориентированного графа. Найти путь с заданным весом, начинающийся из заданной вершины.
Ответить с цитированием
  (#2 (permalink)) Старый
goal goal вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 16.10.2014
По умолчанию 22.10.2014, 00:23

Как минимум, так можно. Работает с выводом нескольких путей. В случае, если ничего не найдено, на экране будет только "End of poisk".
Как организовать по-простому еще и фразу "Not found", пока не придумала((
Можно убрать несколько путей (вывод первого попавшегося), но добавить "Not found".
prolog Код:
domains
listchars=char*

predicates

  nondeterm v(char, char, integer)
  nondeterm start(integer)
  nondeterm poisk1(char, integer, listchars).
  nondeterm poisk2(char, integer, integer, listchars).
clauses
v('A', 'B', 8).
v('A', 'F', 7).
v('B', 'C', 3).
v('B', 'E', 5).
v('C', 'D', 1).
v('D', 'H', 5).
v('E', 'D', 6).
v('E', 'G', 4).
v('F', 'E', 8).
v('F', 'G', 9).
v('G', 'H', 5).

poisk2(_, 0, 0, []).
poisk2(A, Sum, SumR, Otv):-  Sum > 0, v(A, B, S), Sum2= Sum-S, poisk2(B, Sum2, SumR2, Otv2), SumR= SumR2+S, Otv=[B|Otv2].

poisk1(A, Sum, Otv):- poisk2(A, Sum, SumR, Otv2), Sum= SumR, Otv = Otv2.

start(A):-  poisk1('A', A, Otv), Result=['A'|Otv], write(Result), nl, fail;
        write("End of poisk"), readchar(_).

goal
  start(21).
Ответить с цитированием
Пользователь сказал cпасибо:
anastasia05 (22.10.2014)
  (#3 (permalink)) Старый
aag aag вне форума
А.А.Г.
 
Аватар для aag
 
Сообщений: 3,368
Сказал(а) спасибо: 0
Поблагодарили 81 раз(а) в 81 сообщениях
Регистрация: 29.11.2008
Адрес: Адмиралтейская)))
По умолчанию 22.10.2014, 00:55

Цитата:
Сообщение от goal Посмотреть сообщение
Как организовать по-простому еще и фразу "Not found", пока не придумала((
Предикат start(_) убейте вааще.

В пятёрке:
goal
poisk('A', 21, Otv).

В Турбе раздел goal убрать. Запустить. В окне диалога ручками ввести то же poisk('A', 21, Otv).

И там и там должно вывести все решения и их количество. Или что-то вроде "No Solution" если решений нет.

Если я ничего не путаю за давностью лет)))


импортирован с progz.ru
Ответить с цитированием
Пользователь сказал cпасибо:
anastasia05 (22.10.2014)
  (#4 (permalink)) Старый
goal goal вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 16.10.2014
По умолчанию 22.10.2014, 02:40

Да, действительно, так =) Опыт не пропить)

goal
poisk('A', 21, Otv).

Otv=['F','E','D']
Otv=['F','G','H']
2 Solutions

goal
poisk('A', 5, Otv).

No Solution
Ответить с цитированием
Пользователь сказал cпасибо:
anastasia05 (22.10.2014)
Ads
Ответ

Метки
prolog , логическое , пролог

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно найти критический путь в цикличном графе!!!.... lady555 Pascal 0 09.03.2012 15:14
Задание - найти самый короткий путь в графе по алгоритму Дейкстри blondik Haskell 1 29.03.2011 01:06
Код для поиска минимального пути в ориентированном графе используя шаблоны STL zener Вопросы начинающих программистов 0 11.12.2010 16:51
Кратчайший путь на графе KatiaMin Prolog 4 24.05.2010 18:43
Пропишите в C++Builder6 путь к разархивированной папке где найти этот путь Evangelion C++ Builder 3 11.01.2007 18:13
Минимальный путь на графе для перевозки делимого груза. jram Prolog 0 22.12.2006 12:05
Минимальный путь на графе ?! (PDC) Andy Ch Prolog 7 02.02.2005 17:19
Минимальный путь на графе с учётом пошлин за проезд. SAXA Prolog 3 30.12.2004 00:21
Как найти самый длинный простой путь в графе Kvikvek Pascal 0 24.05.2004 00:07
Нужен путь в графе EvgeniyV Prolog 1 17.04.2004 15:05
Найти самый длинный путь к графе mimoza Алгоритмы 10 14.03.2004 15:32
Как найти в ориентированном графе самый большой цикл Anonymous Prolog 2 17.12.2003 18:35



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов