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  +


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

хочешь - опиши, в чем суть, может подскажу, как безболезненно закодить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Суть такова:

В результате выполнения первой подзадачки у меня на выходе получается табличка которую я представил раньше (я ее пока представляю как двумерный вектор, матрицу).

Строки этой матрицы - это все наборы на которых минимизируемая функция принимает значение равное 1
(для моего примера, 0110, 0010, 0101, 0001, 1000, 1101 ), а строки - "маски", в которых кроме символов "0" и "1" встречаются "х" (любое из "0"/ "1")

Так к примеру маска "01х0" покрывает следующие наборы: 0110 и 0100. И т.д.

Цель: Найти минимальное покрытие, т.е. множество масок покрывающих все наборы на которых функция принимает значение 1.

Лучше всего было бы это разобрать метод Петрика так как он дает точный результат по сравнению, для примера, с методом минимальной строки/столбца. Но вот как его реализовать, и как представить эту таблицу покрытий пока загадка)
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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

 





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