ТОМ - платформа для текстовых игр

Объявление

Платформа ТОМ предназначена для создания текстовых игр на русском языке и имеет развитый парсер, позволяющий взаимодействовать с играми с помощью команд на близком к естественному языке. В данный момент активно разрабатывается версия ТОМ 2.
Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Отношения

Сообщений 1 страница 2 из 2

1

В новом ТОМе ввели отношения, но не было написано ни слова о том как их использовать.
Здесь я попытаюсь немного развеять непонимание всех этих непонятных "флагов" транзитивность, симметричность, рефлексивность и др.
На самом деле всё это идет из логики бинарных отношений и если не лениться, то все определения можно найти в википедии. Но каким же боком все эти понятия из высшей математики относятся к парсерной платформе под названием ТОМ2 ? Попробуем разобраться.

Отношение один-к-одному/один-ко-многим/многие-к-одному/многие-ко-многим - (читайте ниже сообщение ASBer-а) Очень похоже на отношения в базах данных.

Транзитивность - Определение из википедии: В математике бинарное отношение R на множестве X называется транзитивным, если для любых трёх элементов множества a, b, c выполнение отношений aRb и bRc влечёт выполнение отношения aRc.
Примеры из жизни:
Отношение [объект больше объекта] транзитивно, т.к. если [земля больше яблока], а [яблоко больше горошины], то однозначно [земля больше горошины]. И так для любого объекта.
Пример не транзитивного отношения: [человек мама человека]. Ведь если [Маша мама Лены], а [Лена мама Кати], то [Маша не мама Кати], она её бабушка.

Симметричность/Антисимметричность - Определение из википедии: В математике бинарное отношение R на множестве X называется симметричным, если для каждой пары элементов множества (a, b) выполнение отношения aRb влечёт выполнение отношения bRa.
Тут понятно даже из названия: отношение симметрично, если оно остаётся верным после перемены элементов местами.
Например, отношение [человек брат человека] симметрично, т.к. если [Петя брат Вити], то и [Витя брат Пети].
В пример антисимметричного отношения можно взять пример из предыдущей группы [человек мама человека]. Сами разберётесь почему?

Рефлексивность/Антирефлексивность - Определение из википедии: В математике бинарное отношение R на множестве X называется рефлексивным, если всякий элемент этого множества находится в отношении R с самим собой.
Если честно, пример рефлексивного отношения найти мне оказалось не так уж просто.
Могу привести лишь не очень понятное отношение [объект равен объекту]. Т.к. [кружка равна кружке] (т.е. самой себе), [5 = 5] и т.д.
Гораздо больше идёт на ум антирефлексивных отношений: [человек сын человека], [объект содержит объект]...

Что-бы закрепить прочитанное разберём несколько отношений непосредственно из демо-игры "to_pawn":

Код:
отношение объект содержит объект, 1 ко многим, транзитивно, антисимметрично, антирефлексивно.

Транзитивно, потому-что если [комната содержит сундук], а [сундук содержит алмазы], то [комната содержит алмазы].
Антисимметрично, т.к. если [комната содержит сундук], то [сундук не содержит комнату]
Антирефлексивно: [сундук не содержит сундук], [алмазы не содержат алмазы] и т.д.

Код:
отношение место содержит место, 1 ко многим, рефлексивно, антисимметрично

Здесь не указано что отношение транзитивно, значит оно не транзитивно. Хотя если посмотреть, то отношение [место содержит место] должно быть транзитивным. Сравним хотя-бы тройки мест [улица-дом-комната], или [дом-коридор-лифт]. Ведь если [дом содержит коридор], а [коридор содержит лифт], значит и [дом содержит лифт]. Хотя не знаю, может это будет противоречить логике локаций в ТОМ2, так-что не буду настаивать.
Рефлексивно - не знаю как это получилось, но в коде так и прокомментировано: "рюмочная содержит рюмочную, а улица содержит улицу - банально, но это так."
Антисимметрично. Аналогично примеру из предыдущего отношения.

Я намеренно опустил описание отношений один-к-одному, один-ко-многим и другие из этой же группы, т.к. не знаю по каким принципам они подставляются.

Не смотря на всю ясность определений бинарных отношений, в тех пяти примерах из to_pawn мы уже видим множество отклонений от здравого смысла. И в них наверняка скрыт какой-то свой смысл. Так-что...

Отредактировано Alexandr (2014-01-16 17:40:14)

2

Да, именно из википедии я все эти флаги и взял  :D  всё верно.

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

один-ко-многим:
на одном столе может находиться много предметов, но предмет не может находиться на нескольких столах одновременно.
если сообщить что предмет находится на другом столе, отношение со старым столом автоматически прервётся.
(т.е. мы просто переложили предмет со стола на стол)

один-к-одному
в 1 ствол может быть заряжен только 1 патрон.
если в ствол X заряжен патрон A, то понятно что патрон B в него не заряжен.

многие-к-одному
многие люди поклоняются одному богу.

многие-ко-многим
все люди внутри комнаты видят и слышат друг-друга.

надеюсь что немного прояснил... :)