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

Зависимый/независимые сущности

02.04.2018, 15:37. Показов 794. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
% зависимости, т.е. с зависит от b. b, в свою очередь, зависит от a. a независимая сущность
m(c,b).
m(b,a).
 
% вспомогательный предикат
not_member(_,[]):- !.
not_member(X,[H|Q]):-
    dif(X,H),
    not_member(X,Q).
 
% 
check_2([],_):- !.
check_2([H|T], X):- m(H, Y), member(Y,X), check_2(T, X).
check_2([H|_], X):- m(H, Y), not_member(Y,X), fail.
check_2([H|_], X):- fail.
 
 
 
 
% check (L) Возвращает true, когда L не имеет независимых сущностей.
% пример: check([c,b]).             false
% пример: check([b,a]).             true
check(X):- check_2(X,X).
Мне необходимо написать предикат проверки на независимые сущности. Помогите исправить check_2.

Добавлено через 1 час 14 минут
Я сделал в предыдущей работе предикат:
Prolog
1
2
3
4
5
check_old_2([], _):- fail.
check_old_2([H|_], X):- depends(H, Y), not_member(Y,X), !. 
check_old_2([_|T], X):- check_old_2(T, X).
 
check_old(X):- check_old_2(X,X).
Он является обратным для моего текущего задания. А вот как противоположный написать, не получается пока...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2018, 15:37
Ответы с готовыми решениями:

Сильные (независимые) сущности
Как выделить из диаграммы сильные (независимые, обычные) сущности?

Как правильно отобразить на экране сущности и добавление полей к сущности
Есть примеры привязки бд с не тепезированным набором данных Как правильно отобразить на экране сущности и добавление полей к сущности

Зависимый список
Не работает зависимый список выводимый из БД. 1. Вывод из БД <select name="rayon" id="rayon"> <option...

5
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
02.04.2018, 22:03
Если честно, задачу не понял. Независимая сущность - это которая ни разу не встречается в левой части m?
А что тогда проверять?
Prolog
1
undepend(Z) :- not(m(Z, _)).
В какой момент появляются списки?
0
0 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 392
02.04.2018, 22:36  [ТС]
Black Fregat, огромное спасибо за проявленный интерес.
Я попробую "перевести" свою задачу на задачу на ОРИЕНТИРОВАННЫЕ графы:
Итак, есть связи между вершинами графов.
Prolog
1
2
m(c,b).
m(b,a).

Мой предикат (check(X)) получает список вершин графов (без какого то порядка). Мне необходимо проверить, есть ли в списке полные пути или нет.

check([c,b]). получаем false, так как из вершины b есть связь с вершиной a, но вершины а в списке нет. (начинаем, разумеется с вершины с...)
check([b,a]). получаем true, так как из вершины b есть связь с вершиной a и эта вершина в списке.

Добавлено через 19 минут
А старый предикат вычислял противоположность новому:
Prolog
1
2
3
4
5
check_old_2([], _):- fail.
check_old_2([H|_], X):- m(H, Y), not_member(Y,X), !. 
check_old_2([_|T], X):- check_old_2(T, X).
 
check_old(X):- check_old_2(X,X).
Если в списке есть неполный путь, то ложь.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
03.04.2018, 16:27
Всё же логика до конца не просматривается. Если, скажем, в списке будут два несвязных пути - это да или нет?
Prolog
1
2
3
m(d,c).
m(b,a). 
check([d,c,b,a]). - ?
Добавлено через 4 минуты
Могут ли в цепочке сущностей быть ветвления? И как их правильно обрабатывать?
Prolog
1
2
3
m(c,a).
m(c,b).
check([c,a]). - ?
0
0 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 392
03.04.2018, 18:02  [ТС]
Prolog
1
2
3
m(d,c).
m(b,a). 
check([d,c,b,a]). - ?
true, d связано с "с" и "с" находится в списке. "с", в свою очередь, связи с какими-нибудь вершинами не имеет. Аналогично, b и a.

Prolog
1
2
3
m(c,a).
m(c,b).
check([c,a]). - ?
То же false, так как вершины b в списке нет.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
04.04.2018, 03:53
Я бы написал примерно так:
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
m(a,b).
m(b,c).
m(d,e).
m(d,f).
m(g,h). 
 
check_one(X, L) :-
    m(X, Y),
    not(member(Y, L)).
 
check_all([], _).
check_all([H|T], L) :- 
    not(check_one(H, L)),
    check_all(T, L). 
 
check(L) :- check_all(L, L).
 
test(L) :-
  write(L), 
  write(" - "), 
  check(L), !,
  write("YES"), nl; 
  write("NO"), nl.
 
go :-
  test([a]),
  test([a,b]),
  test([a,b,c]),
  test([a,c]),
  test([b,c]),
  test([c]),
  
  test([d,e]),
  test([d,f]),
  test([d,e,f]),
  
  test([a,b,c,d,e,f,g,h]),
  test([b,c,d,e,f,g,h]),
  write("---------------").
Code
1
2
3
4
5
6
7
8
9
10
11
12
["a"] - NO
["a","b"] - NO
["a","b","c"] - YES
["a","c"] - NO
["b","c"] - YES
["c"] - YES
["d","e"] - NO
["d","f"] - NO
["d","e","f"] - YES
["a","b","c","d","e","f","g","h"] - YES
["b","c","d","e","f","g","h"] - YES
---------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2018, 03:53
Помогаю со студенческими работами здесь

Зависимый ДопСписок
Доброе время суток уважаемые! Если выбрать значение из списка в главной категории и сразу перейти к до списку, то выпадающий...

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

Массив зависимый от счетчика (k)
Добрый Вечер, моя задача сделать массив зависимый от счетчика (k) в этой программе: var a:array of integer; k, i, r, s, max1,...

Списки - зависимый отбор
есть 2 столбца: страна, и название турфирмы (и соответствующие списки): страна1 фирма1 страна1 фирма2 страна1 фирма3 страна2...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru