0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 30
1

Графы в Visual Prolog

10.11.2019, 15:43. Показов 1739. Ответов 2

Author24 — интернет-сервис помощи студентам
Имеется код для выполнения задачи нахождения пути из одного города в другой по графу. Необходимо решить задачи:
1. Найдите все пути, не превосходящие заданной длины.
2. Найдите все пути от одного пункта до другого, которые содержат не более заданного числа пересадок.
Файл main.pro:

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
46
47
48
49
50
51
52
% Copyright
 
implement main
    open core
 
class facts - graph
    arc : (string, string, unsigned).
 
class predicates
    depthFirst : (string, string, string* [out], unsigned [out]) nondeterm.
    path : (string, string, string*, string* [out], unsigned, unsigned [out]) nondeterm.
    edge : (string, string [out], unsigned [out]) nondeterm.
 
clauses
    edge(X, Y, Dist) :-
        arc(X, Y, Dist)
        or
        arc(Y, X, Dist).
 
    depthFirst(Start, Goal, list::reverse(Path), Dist) :-
        path(Start, Goal, [Start], Path, 0, Dist).
 
    path(Goal, Goal, Path, Path, Dist, Dist) :-
        !.
 
    path(V, Goal, CurrPath, Path, CurrDist, Dist) :-
        edge(V, NextV, D),
        not(NextV in CurrPath),
        path(NextV, Goal, [NextV | CurrPath], Path, CurrDist + D, Dist).
 
    run() :-
        CP = commandLineParser::new(),
        CP:acceptEmpty := true,
        CP:addOption_help("-help"),
        % define command line options here
        if ErrorMessage = isSome(CP:parse()) then
            stdio::write(ErrorMessage)
        else
            % place your own code here
            file::consult("graph.txt", graph),
            depthFirst("Москва", "Псков", Path, D),
            stdIO::write(string::concatWithDelimiter(Path, " -> "), " : ", D),
            stdIO::write("\n"),
            fail
            or
            _ = stdIO::readLine()
        end if.
 
end implement main
 
goal
    console::run(main::run).
Файл с путями графа: graph.txt
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2019, 15:43
Ответы с готовыми решениями:

Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5
Проблема переноса. Взяла пример с книги Visual Prolog 7.1 для начинающих. Это игра червь. Вроде...

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что...

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog
DOMAINS l_i=integer* l_s=string* i=integer s=string c=char structura=str(i,s) %Структура...

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains...

2
Фрилансер
3707 / 2079 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
10.11.2019, 19:12 2
1. В предикат path первым правилом прописываем неуспех, если длина превысила заданную
2. То же решение, только проверять количество вершин в пути
0
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 30
10.11.2019, 22:00  [ТС] 3
Кодом можете помочь?
0
10.11.2019, 22:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2019, 22:00
Помогаю со студенческими работами здесь

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 7.3 turbo prolog: ...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 5.2 turbo prolog: ...

Графы, цикличность графа [SWI Prolog]
Помогите пожалуйста написать предикат. Имеется неявно заданный граф. У нас есть предикат cyclic,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru