| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Перебор логических функций. |
| Автор: LLoid 10.10.2007, 17:24 |
| На вход подается строка примерно следующего содержания: (1 or 0) and (not(0 and 1)) и N - число переменных логич. функции. Требуется определить универсальную формулу вида (x1 or x2) and (not(x2 and x1)) . Для 2-х переменных алгоритм ясен. Подскажите, как поступать дальше. Как именно осуществллять перебор? |
| Автор: SoWa 10.10.2007, 17:47 |
| Если я правильно понял, тебе необходимо просто на вывод дать формулу без значений, а с переменными... Так их тогда всего четыре может быть 1,0,not1,not2 Просто подставлять. |
| Автор: _Y_ 11.10.2007, 09:56 |
| Правильно ли я понял, что надо просто отпарсить текст, описываюший логическое уравнение произвольной длины? После чего выполнить записанные этим текстом операции? Если да, то лет цать назад я писал такой парсер на VB3 еще. Нужно - поищу исходник. |
| Автор: LLoid 11.10.2007, 16:00 |
| _Y_, значение введённой функции высчитывается в программе сразу же. Требуется перебрать все возможные комбинации для получения универсальной формулы. например вот так: N=3 - то есть в полученной формуле должно содержаться 3 переменных: x1, x2, x3 F=(1 or not(0)) and not(1 or 0 and 0 or 1) or 1 and not(1) В результате должно получиться что-то вроде (x1 or not(x3)) and not(x2 or x3 and x1 or x2) or x1 and not(x1) ' это для x1=1, x2=1, x3=0 Проблема в том, что переменные могут быть расставлены как угодно! |
| Автор: esperant0 11.10.2007, 16:34 |
| ничего не понял. 1) прочитайте принятые обозначения 2) сформулируйте задание на общепринятом суть понятном знающим людям языке. пс: а в стиле "мои мысли мои скакуны" лучще не писать (с) |
| Автор: _Y_ 12.10.2007, 08:09 |
| Действительно. Я тоже ничего не понял |