Здравствуйте Nikulina, Вы писали:
N>Есть табличка 10*10. Заполняется случайным образом. Три состояния: 0, 1, и галочка
. Требуется отобрать строчки таким образом, чтобы в каждом столбце была бы по крайней мере одна галочка, а число строк было минимальным.
N>Предположительно "6-ой пункт метода Квайна-Мак Класски"
Кроме рекурсии
Добавлять строки по одной до тех пор пока не заполнятся все 10 столбцов или не кончатся строки.
если строка не добавляет стобцов с галочками не добавлять её.
если нашли решение сравнить с предыдушим если строк меньше запомнить.
потребуется (в худшем случае) 10! = 3628800 попыток что ещё более или менее приемлемо
для динамических и волновых методов потребуется судя по всему памяти порядка 10!^2 = 13168189440000 что уже НЕ приемлемо
Можно составить граф из 3628800 вершин соеденить рёбрами переходы (добавление той или инной строки) и искать кратчайший путь от состояния где чалочек нет к состоянию где галочки есть памяти порядка 13168189440000 операций столько же
Так что старая добрая рекурсия, впрочем если больше 10x10 тогда и ей туговато