Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6

Составить запрос. Задача Коммивояжера

20.03.2012, 01:25. Показов 2063. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста составить запрос к программе...

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
e(a,b,3).e(a,c,8).e(a,d,1).e(a,e,5).e(a,f,12).e(a,g,8).e(a,h,4).e(a,i,33).e(a,j,1).
e(b,c,22).e(b,d,45).e(b,e,12).e(b,f,18).e(b,g,76).e(b,h,100).e(b,i,15).e(b,j,91).
e(c,d,17).e(c,e,2).e(c,f,15).e(c,g,4).e(c,h,13).e(c,i,70).e(c,j,81).
e(d,e,36).e(d,f,28).e(d,g,101).e(d,h,22).e(d,i,9).e(d,j,7).
e(e,f,14).e(e,g,31).e(e,h,7).e(e,i,10).e(e,j,5).
e(f,g,1).e(f,h,2).e(f,i,1).e(f,j,100).
e(g,h,33).e(g,i,12).e(g,j,2).
e(h,i,18).e(h,j,71).
e(i,j,6).
 
 
tsp(Towns, _, _):-
  retract_all(bestroute(_)),
 asserta(bestroute(r([], 1000))),
  route(Towns, Route, Distance),
  bestroute(r(_, BestSoFar)),
  Distance < BestSoFar,
  retract(bestroute(r(_, BestSoFar))),
  asserta(bestroute(r(Route, Distance))),
  fail.
tsp(_, Route, Distance):-
  retract(bestroute(r(Route, Distance))), !.
 
route([First|Towns], [First|Route], Distance):-
  route_1(Towns, First, First, 0, Distance, Route).
 
route_1([], Last, First, Distance0, Distance, []):-
distance(Last, First, Distance1),
Distance is Distance0 + Distance1.
 
route_1(Towns0, Town0, First, Distance0, Distance, [Town|Towns]):-
  remove(Town, Towns0, Towns1), 
  distance(Town0, Town, Distance1),
  Distance2 is Distance0 + Distance1,
  route_1(Towns1, Town, First, Distance2, Distance, Towns).
 
%distance(X, Y, D):-X @< Y, !, e(X, Y, D).
%distance(X, Y, D):-e(Y, X, D).
distance(X, Y, D):- e(X, Y, D);e(Y,X,D).
 
retract_all(X):-retract(X), retract_all(X).
retract_all(X).
 
remove(X,[X|Tail],Tail).
remove(X,[Y|Tail],[Y|Tail1]):-remove(X,Tail,Tail1).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2012, 01:25
Ответы с готовыми решениями:

Задача коммивояжера.
Может у кого-то есть решение задачи Коммивояжера (нужно посетить все вершины графа и вернуться в исходную с минимальными затратами) на...

Задача коммивояжера
Здравствуйте! Помогите, пожалуйста, с задачей по контрольной работе: У коммивояжера есть 4 часа, чтобы посетить 4 своих потенциальных...

Задача коммивояжера
Всем привет! Необходимо решить задачу коммивояжера с помощью жадных алгоритмов. Разбирался вообще с самой задачей и алгоритмами, но везде...

8
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
20.03.2012, 15:27
?- tsp([a,j,g,f,e],Route,Distance).

Только у Вас каждая вершина с каждой связана, поэтому не удивляйтесь, что ответом будет просто исходный список.
1
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6
21.03.2012, 18:56  [ТС]
Спасибо! Только выводит почему-то пустой маршрут. И расстояние всегда 1000. Не поможете, пожалуйста, найти ошибку...Я пользуюсь strawberry prolog. Может быть в нем проблема?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
22.03.2012, 09:23
Да, клубничный иногда глючит. Вы убрали некоторые ребра? Если да, то Вы учитываете, что необходимо не только все вершины пройти, но и в первую вернуться? И что можно использовать только вершины из списка в запросе? А то я когда тестила сама на этом попалась. И насколько я могу судить, там все правильно.
1
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6
22.03.2012, 19:10  [ТС]
Я пока ничего не убирал. Но запрос
Prolog
1
?- tsp([a,e],Route,Distance),write(Route).
выдает пустой список. Получается виноват стробери пролог?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
22.03.2012, 19:28
Он вам там кучу ворнингов выдает? Если да, значит Вы так и оставили в таком виде
e(a,b,3).e(a,c,8).e(a,d,1)...
Разделяйте пробелами факты. Так у меня и на клубничном работает.
1
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6
22.03.2012, 19:44  [ТС]
Prolog
1
2
3
4
5
6
7
8
9
 e(a,b,3). e(a,c,8). e(a,d,1). e(a,e,5). e(a,f,12). e(a,g,8). e(a,h,4). e(a,i,33). e(a,j,1).
 e(b,c,22). e(b,d,45). e(b,e,12). e(b,f,18). e(b,g,76). e(b,h,100). e(b,i,15). e(b,j,91).
 e(c,d,17). e(c,e,2). e(c,f,15). e(c,g,4). e(c,h,13). e(c,i,70). e(c,j,81).
 e(d,e,36). e(d,f,28). e(d,g,101). e(d,h,22). e(d,i,9). e(d,j,7).
 e(e,f,14). e(e,g,31). e(e,h,7). e(e,i,10). e(e,j,5).
 e(f,g,1). e(f,h,2). e(f,i,1). e(f,j,100).
 e(g,h,33). e(g,i,12). e(g,j,2).
 e(h,i,18). e(h,j,71).
 e(i,j,6).
Спасибо Вам большое, что помогаете! Я разделил, ворнинги исчезли, но так же выводит пустой путь на запрос
Prolog
1
?- tsp([a,b],Route,Distance),write(Route).
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
22.03.2012, 20:05
Ну тогда я уже не знаю, бывает он и так тупит. Попробуйте создать другой файл, и в него код копернуть. Мне иногда помогало.
1
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 6
22.03.2012, 20:41  [ТС]
Спасибо Вам большое! Так и попытаюсь объяснить преподу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2012, 20:41
Помогаю со студенческими работами здесь

Задача коммивояжера
привет всем. помогите написать программу, реализующую решение задачи коммивояжера размерностью 5*5. Программа должна: 1)позволять...

Задача коммивояжера (C++ -> Си)
Задача коммивояжёра #include &lt;iostream&gt; using namespace std; const int inf=1E9,NMAX=16; int n,i,j,k,m,temp,ans,d,t; bool...

Задача Коммивояжера
Есть список валют: tickersList BTC_USD BTC_EUR BTC_RUB BTC_UAH BTC_PLN BCH_BTC

Решить задачу коммивояжера
Помогите с решением пожалуйста . У коммивояжера есть 4 часа, чтобы посетить 4 своих потенциальных покупателей. Размер комиссионных...

Задача коммивояжера
А Б В Г Д Е Ж А - 5 11 6 3 15 8 Б 5 - 7 12 6 7 2 В 11 7 - 3 6 3 7 Г 6 12 3 - 2 4 13 Д 3 6 6 2 - 2 5 Е 15 7 3 4 1 - 4 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru