IPB
ЛогинПароль:

> Задача нахождения минимального покрытия
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


У меня вот такая проблема(
Я минимизирую булевую функцию методом Квайна-мак-Класки который условно можно поделить да две подзадачи - склеивание наборов до получения пустого и нахождение миним. покрытия.

Так вот первую часть я выполнил, а во второй не могу найти метод, который можно было бы это сделать((. Полный перебор не подходит...

К примеру после решения первой части задачи выходит вот такая таблица покрытий:

__________________________________________

______0110____0010____0101____0001____1000____1101

01х1____________________1_________________________

х101____________________1_______________________1_

011х____1_________________________________________

хх10_____1______1_________________________________


Я хотел попробовать методом Петрика.... но кажется он не так прост для программирования его( может есть какие то попроще, кто знает? ))

Сообщение отредактировано: Scorp_Freeman -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Michael_Rybak
*****

Группа: Пользователи
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


А тебе точно не подойдет полный перебор? Для функций четырех переменный его хватит с головой, и писать гораздо меньше.

Почитал про метод Петрика. Дебри, конечно, но ничего смертельного; просто берешь, и так и делаешь, как сказано smile.gif

В чем проблема с представлением таблицы покрытий? Просто булевский двумерный массив (true - если покрывает, false - если нет). А маски представляй, для удобства, в системе счисления с основанием 4: 0 это 0, 1 это 1, 2 это "х", а 3 не используется. Можно было бы в троичной, но с основанием 4 удобнее работать - можно с помощью сдвигов легко манипулировать разрядами.

Или представляй парой чисел - первое с единицами вместо "х", а второе - с единицами вместо "х" и нулями вместо не "х". Например, маску "01х1" представляй парой (0111, 0010). Первое число в паре задает точные биты, а второе говорит, где у нас иксы.

Вообще, можно и обойтись без этой матрицы, и просто на ходу для каждой пары (маска, набор) вычислять, покрывает ли маска этот набор.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Scorp_Freeman   Задача нахождения минимального покрытия   17.01.2008 14:54
Michael_Rybak   насколько я помню наш курс дискретки, лучшее, что …   17.01.2008 16:09
Гость   Суть такова: В результате выполнения первой подза…   17.01.2008 22:44
Scorp_Freeman   Это я гость)) забыл про авторизацию))))   17.01.2008 22:47
Michael_Rybak   А тебе точно не подойдет полный перебор? Для функц…   18.01.2008 7:34
Scorp_Freeman   А тебе точно не подойдет полный перебор? Для функ…   18.01.2008 19:14
Scorp_Freeman   :) можно попробовать... идея появилась,правда при…   18.01.2008 19:24
Michael_Rybak   Ну и что, что не постоянное? Заводишь массив завед…   18.01.2008 19:16
Michael_Rybak   Повозиться тут определенно придется. Особенно на п…   18.01.2008 19:26
Scorp_Freeman   А чего особенно на паскале? Хотя я все равно буду…   18.01.2008 19:28
Michael_Rybak   Так на с++ векторами гораздо удобнее! Вектор -…   18.01.2008 19:37
Scorp_Freeman   Говоришь векторы)) Посмотрим с чем их едят :good: …   18.01.2008 19:43
Michael_Rybak   Типа динамических в паскале, но на порядок удобнее…   18.01.2008 19:54


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 17:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name