![]() |
|
|
![]()
|
|
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Пусть есть n объектов a_1, a_2, ... a_n. Это не переменные, а терминальные (конечные) объекты.
Рассмотрим конъюнкции, составленные из равенств и неравенств (отрицаний равенств) между этими объектами. Равенство (в пределах конъюнкции) обладает обычными свойствами: объект равен сам себе, коммутативность, транзитивность. Естественно, не все сочетания совместимы, так как, например, (a_1=a_2)*(a_1=a_3)*(a_2<>a_3) = 0. Кроме того, (a_1=a_2)*(a_1=a_3)*(a_2=a_3) = (a_1=a_2)*(a_1=a_3), (a_1=a_2)*(a_1<>a_2)=0 и так далее. Каждая конъюнкция должна быть "полной", то есть, соответствовать одному разбиению множества {a_1, a_2, ... a_n} на классы эквивалентности. Ясно, что некоторые разные конъюнкции соответствуют одним и тем же разбиениям. Можно заметить, что каждую конъюнкцию можно представить в виде графа, где ребро означает равенство, а отсутствие -- неравенство. Теперь рассмотрим произвольное подмножество всех таких конъюнкций и составим из них дизъюнкцию. Можно заметить, что это выражение можно представить в виде как бы наложения нескольких графов один на другой. Если ребро присутствует во всех членах, то оно получается "жирным", а если не во всех, то "бледным". Если ребро во всех членах отсутствует, то в наложении мы тоже "увидим" чистый промежуток между узлами. Но, естественно, этот образ не даёт полного описания ситуации, так как при одной и той же степени бледности двух рёбер, они могут появляться в разных членах. Вопрос в том, как такое, во-первых, хранить, а, во-вторых, выполнять с ним основные логические операции (и, или, не)? Проблема в том, что возможных конъюнкций очень много. Их количество описывается так называемыми числами Бернулли. То есть, например, при 20 объектах может быть составлено 51724158235372 разбиений и ещё больше конъюнкций. Поэтому, видимо, требуется постоянно упрощать выражение. Задача упрощения логического выражения в общем случае тоже очень сложна. Так, алгоритм МакКинси практически не применим для более чем 6-7 переменных. Проблема в том, что в этом алгоритме требуется преобразовывать выражение в полную нормальную дизъюнктивную или конъюнктивную формы, а в них тоже очень много членов. Возникает вопрос: ведь в данном случае у нас не произвольные переменные, а только равенства или неравенства, между которыми есть дополнительные упрощающие соотношения и ограничения целостности. Не может ли это сделать задачу более подъёмной? Можно зайти с другой стороны. Хранить в отдельности каждое разбиение на классы эквивалентности и написать логические процедуры для них. Но здесь тоже получаются непростые выражения и при этом совсем непонятно, как с ними работать. Какие алгебраические действия возможны над разбиениями? Как их упрощать? И так далее. Буду благодарен за любую помощь, ссылки и т.п. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |