Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск пути через заданный маршрут, Помогите плиз исправить 
:(
    Опции темы
Tat
Дата 19.1.2010, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.1.2010

Репутация: нет
Всего: нет



День добрый! подскажите плиз  как решить такую задачку.
Найти путь в графе из нач. точки в конечную через заданный маршрут. Причем в заданном маршруте необязательно ветви могут связываться, например a,d и e,c.
Дан граф. В нем:
участок_дороги-это ветвь.
выполнить_наряд - это путь из нач.точки в конеч.точку через заданный маршрут(участки дорог).

Вот пример кода:
Код

DOMAINS
список=symbol*
PREDICATES
nondeterm принадлежит(symbol,symbol,список)
nondeterm схема_движения(список)            %граф
nondeterm путь(symbol,symbol,integer,список)
nondeterm смежные(symbol,symbol,список)
nondeterm путь1(symbol,список,список,integer,список)
% nondeterm наряд(список)                %участки дорог
nondeterm участок_дороги(symbol,symbol)        %участки дорог, которые необходимо очистить (Нач_пункт участка, Конеч_пункт участка)
% nondeterm участок_дороги(список)            %участки дорог, которые необходимо очистить (Нач_пункт участка, Конеч_пункт участка)
% nondeterm выполнить_наряд(symbol,symbol,список)        %(Нач_пункт участка, Конеч_пункт участка,наряд)

CLAUSES
схема_движения([a,b, b,c, a,d, b,d, b,e, c,e, d,e, d,c, f,a]).%

участок_дороги(f,a).
участок_дороги(a,b).
участок_дороги(b,c).
участок_дороги(a,d).
участок_дороги(b,d).
участок_дороги(b,e).
участок_дороги(c,e).
участок_дороги(d,e).
участок_дороги(d,c).


принадлежит(Нач_пункт,Конеч_пункт,[Нач_пункт,Конеч_пункт|_]). %ф1
принадлежит(Нач_пункт,Конеч_пункт,[_,_|Хвост]):-принадлежит(Нач_пункт,Конеч_пункт,Хвост).%пр1


смежные(Нач_пункт,Конеч_пункт,Схема_движения):-принадлежит(Нач_пункт,Конеч_пункт,Схема_движения);принадлежит(Конеч_пункт,Нач_пункт,Схема_движения).%пр2



путь1(Нач_пункт_,[Нач_пункт_|Путь],_,_,Путь). %ф2
путь1(Нач_пункт_,[Конеч_пункт|Путь1],Схема_движения,Счетчик,Путь):-Счетчик>0,смежные(Нач_пункт,Конеч_пункт,Схема_движения),
                            Счетчик1=Счетчик-1,not(принадлежит(Нач_пункт,Конеч_пункт,Путь1)),
                        путь1(Нач_пункт_,[Нач_пункт,Нач_пункт,Конеч_пункт|Путь1],Схема_движения,Счетчик1,Путь).%пр3b

  
путь(Нач_пункт_,Конеч_пункт,Счетчик,Путь):-схема_движения(Схема_движения),путь1(Нач_пункт_,[Конеч_пункт],Схема_движения,Счетчик,Путь).


GOAL

путь(f,b,2,Путь).%находит путь из точки f в точку b с количеством пройденных ветвей небольше2х
/*Путь=["f","a","a","b"]
1 Solution*/




%выполнить_наряд(f,b,[a,d,e,c]).                                                 % -как выполнить такой запрос:
                                                                                                      %вывести путь из f в b проходящий через маршрут [a,d,e,c]?????
                                                                                                     

Подскажите пожалуйста как это сделать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.1319 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.