Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для kattten
1 / 1 / 0
Регистрация: 26.01.2010
Сообщений: 34

Диаметр графа

26.01.2010, 09:52. Показов 2981. Ответов 7
Метки нет (Все метки)

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

Нужно найти диаметр графа, т.е. максимум расстояний между всевозможными парами его вершин.

Вот что я написала..

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
domains
   list=string*
database
   maximum(integer)
predicates
   vertex(string)
   tree(string,string)
   path(string,string,list)
   path1(string,list,list)
   shortpath(string,string,list)
   shorter(string,string,integer)
   member(string,list)
   len(list,integer)
   all_pair(string,string)
goal
   clearwindow,
   asserta(maximum(0)),
   all_pair(X,Y),
   maximum(N),
   N1=N-1,
   write("„Ё*¬Ґва Ја*д*=",N1 ),nl,
   retract(maximum(_)).
clauses
   vertex(a).
   vertex(b).
   vertex(c).
   vertex(d).
   vertex(e).
   vertex(f).
   vertex(g).   
   tree(a,c).
   tree(c,b).
   tree(b,d).
   tree(c,d).
   tree(a,e).
   tree(b,e).
   tree(e,f).
   tree(f,g).
   len([],0).
   len([_|Tail],N):-len(Tail,M),N=M+1.
 
   member(X,[X|_]).
   member(X,[_|Tail]):-member(X,Tail).
 
   path(A,B,L):-path1(A,[B],L).
 
   path1(A,[A|Path1],[A|Path1]).
   path1(A,[B|Path1],Path):-tree(X,B),
                            not(member(X,Path1)),
                            path1(A,[X,B|Path1],Path).
 
   shortpath(X,Y,L):-path(X,Y,L),
                     len(L,N),
                     not(shorter(X,Y,N)).
 
   shorter(X,Y,N):-path(X,Y,L),
                   len(L,M),
                   M<N.
 
   all_pair(X,Y):-vertex(X),
                  vertex(Y),
                  X<>Y,
                  shortpath(X,Y,S),
                  len(S,N1),
                  maximum(N),N1>N,
                  retract(maximum(N)),
                  asserta(maximum(N1)),
          fail.
   all_pair(X,Y):-vertex(X),
                  vertex(Y),
                  X<>Y,
                  shortpath(X,Y,S),
                  write(X,"-",Y,"=",S),nl,
                  fail. 
   all_pair("","").
Найдите у меня ошибочку, пожалуйста..Завтра зачет, а я никак не могу доделать...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2010, 09:52
Ответы с готовыми решениями:

Найти все вершины графа, к которым существует путь заданной длины от выделенной вершины графа
Написать программу на prologuse на русском языке как на примере(Определить, является ли связным заданный граф.)

Вершины графа, к которым существует путь заданной длины от выделенной вершины графа
Есть стандартная задача: 1. Найти все вершины графа, к которым существует путь заданной длины от выделенной вершины графа Решение к...

Для множества точек на плоскости найти диаметр и центр минимальной описанной окружности
Эх..помогите (надеюсь в последний раз)...Для множества точек плоскости p1(X1,Y1), p2(X2,Y2), ..., pN(Xn,Yn) найти диаметр и центр...

7
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
26.01.2010, 14:52
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
domains
   list=string*
database
   maximum(integer)
predicates
   vertex(string)
   tree(string,string)
   path(string,string,list)
   path1(string,list,list)
   shortpath(string,string,list)
   shorter(string,string,integer)
   member(string,list)
   len(list,integer)
   all_pair(string,string)
goal
   asserta(maximum(0)),
   all_pair(X,Y),
   maximum(N),
   retract(maximum(_)).
clauses
   vertex(a).
   vertex(b).
   vertex(c).
   vertex(d).
   vertex(e).
   vertex(f).
   vertex(g).   
   tree(a,c).
   tree(c,b).
   tree(b,d).
   tree(c,d).
   tree(a,e).
   tree(b,e).
   tree(e,f).
   tree(f,g).
   len([],0).
   len([_|Tail],N):-len(Tail,M),N=M+1.
 
   member(X,[X|_]).
   member(X,[_|Tail]):-member(X,Tail).
 
   path(A,B,L):-path1(A,[B],L).
 
   path1(A,[A|Path1],[A|Path1]).
   path1(A,[B|Path1],Path):-tree(X,B),
                            not(member(X,Path1)),
                            path1(A,[X,B|Path1],Path).
 
   shortpath(X,Y,L):-path(X,Y,L),
                     len(L,N),
                     not(shorter(X,Y,N)).
 
   shorter(X,Y,N):-path(X,Y,L),
                   len(L,M),
                   M<N.
 
   all_pair(A,B):-vertex(X),
                  vertex(Y),
                  X<>Y,
                  shortpath(X,Y,S),
                  len(S,N1),
                  maximum(N),N1>N,
                  write(X,"-",Y," ",N1),nl,
                  retract(maximum(N)),
                  asserta(maximum(N1)),
                  all_pair(A,B).
   all_pair(X,Y):-vertex(X),
                  vertex(Y),
                  X<>Y,
                  shortpath(X,Y,S),
                  len(S,N),
                  maximum(N).
1
 Аватар для kattten
1 / 1 / 0
Регистрация: 26.01.2010
Сообщений: 34
26.01.2010, 15:06  [ТС]
Спасибочки огромное!!!
0
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 7
29.12.2010, 00:16
а можно описание функций, которые исполняет данная программа? (поэтапно)
если не сложно, то с нас требуют, а я это не особо понимаю=(
0
1 / 1 / 1
Регистрация: 08.11.2012
Сообщений: 43
15.11.2012, 15:33
а в си можете объяснить?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
16.11.2012, 22:42
При чем тут Си? Пролог в Си объяснить невозможно.
0
1 / 1 / 1
Регистрация: 08.11.2012
Сообщений: 43
17.11.2012, 13:42
я имела ввиду, эту задачу только на С)
0
1 / 1 / 1
Регистрация: 15.03.2010
Сообщений: 9
21.12.2013, 13:05
Всем привет! срочно нужна помощь по 2 заданиям. Уже всё перечитал что только можно, но дальше процесс уже никак не идет.
Есть две программы, которые не работают в виду недоделанности и кривой реализации в SWI пролог.

2. Найдите диаметр графа, т.е. максимум расстояний между всевозможными парами его вершин. Расстояние между двумя вершинами – кратчайший путь из одной вершины в другую.

Исходный код приведен ниже. Но он не работает правильно. Помогите дописать его, пожалуйста!
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
53
54
55
56
57
58
59
60
61
62
63
64
goal:-
   asserta(maximum(0)),
   all_pair(X,Y),
   maximum(N),
   N1 = N-1,
   write("diamter grapha = ",N1),
   retract(maximum(_)).
 
   vertex(a).
   vertex(b).
   vertex(c).
   vertex(d).
   vertex(e).
   vertex(f).
   vertex(g).
   tree(a,c).
   tree(b,c).
  % tree(b,d).
  % tree(c,d).
   tree(a,e).
  % tree(b,e).
   tree(e,f).
   tree(f,g).
   tree(d,g).
   len([],0).
   len([_|Tail],N):-len(Tail,M),N=M+1.
 
   member(X,[X|_]).
   member(X,[_|Tail]):-member(X,Tail).
 
   path(A,B,L):-path1(A,[B],L).
 
   path1(A,[A|Path1],[A|Path1]).
   path1(A,[B|Path1],Path):-tree(X,B),
                            not(member(X,Path1)),
                            path1(A,[X,B|Path1],Path).
 
   shortpath(X,Y,L):-path(X,Y,L),
                     len(L,N),
                     not(shorter(X,Y,N)).
 
   shorter(X,Y,N):-path(X,Y,L),
                   len(L,M),
                   M<N.
 
   all_pair(A,B):-vertex(X),
                  vertex(Y),
                  X\=Y,
                  shortpath(X,Y,S),
                  len(S,N1),
                  maximum(N),N1>N,
                  write(X),write("-"),write(Y),write(" "),write(N1),nl,
                  retract(maximum(N)),
                  asserta(maximum(N1)),
                  all_pair(A,B).
 
   %all_pair(X,Y):-vertex(X),
   %                   vertex(Y),
   %                   X\=Y,
   %                   shortpath(X,Y,S),
   %                   write(X),write(" -"),write(Y),write(" "),write(S),nl,
   %                   len(S,N),
   %                   maximum(N),
   %                   fail.
Помогите пожалуйста..

Добавлено через 2 часа 10 минут
Во 2-ом неправильная версия.
Вот последний измененный код 2 задания. Не выводит диаметр графа.
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
53
54
55
56
57
58
goal:-
   asserta(maximum(0)),
   all_pair(X,Y),
   maximum(N),
   retract(maximum(_)).
 
   vertex(a).
   vertex(b).
   vertex(c).
   vertex(d).
   vertex(e).
   vertex(f).
   vertex(g).
   tree(a,c).
   tree(c,b).
   tree(b,d).
   tree(c,d).
   tree(a,e).
   tree(b,e).
   tree(e,f).
   tree(f,g).
   len([],0).
   len([_|Tail],N):-len(Tail,M),N=M+1.
 
   member(X,[X|_]).
   member(X,[_|Tail]):-member(X,Tail).
 
   path(A,B,L):-path1(A,[B],L).
 
   path1(A,[A|Path1],[A|Path1]).
   path1(A,[B|Path1],Path):-tree(X,B),
                            not(member(X,Path1)),
                            path1(A,[X,B|Path1],Path).
 
   shortpath(X,Y,L):-path(X,Y,L),
                     len(L,N),
                     not(shorter(X,Y,N)).
 
   shorter(X,Y,N):-path(X,Y,L),
                   len(L,M),
                   M<N.
 
   all_pair(A,B):-vertex(X),
                  vertex(Y),
                  X\==Y,
                  shortpath(X,Y,S),
                  len(S,N1),
                  maximum(N),N1>N,
                  write(X),write('-'),write(Y),write(' '),write(N1),nl,
                  retract(maximum(N)),
                  asserta(maximum(N1)),
                  all_pair(A,B).
   all_pair(X,Y):-vertex(X),
                  vertex(Y),
                  X\==Y,
                  shortpath(X,Y,S),
                  len(S,N),
                  maximum(N).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2013, 13:05
Помогаю со студенческими работами здесь

Найти диаметр графа
Помогите, пожалуйста, найти диаметр графа

Найти диаметр графа
помогите найти диаметр графа, в ответ записать, номера двух вершин и длина пути между ними. вот что у меня есть на данный момент ...

Найти диаметр графа
Помогите решить, уж не знаю куда обратиться, перепробовала все что можно, училка не принимает и не принимает. Суть задачи такова: найти...

Программа, находящая диаметр графа
Помогите пожалуйста составить программу, которая находит диаметр графа на С++. Какой метод вы использовали?

Вычислить диаметр заданного графа
Помогите пожалуйста, нужно написать прогу для вычисления диаметра заданного графа.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru