vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2025-06-10 04:28 pm

Quine–McCluskey algorithm

На днях обсуждали со [personal profile] spamsink минимизацию булевских функций. Тема из далёкого студенчества. Задачка нетривиальная, но давно и глубоко проработанная. Озадачил нею Грока, получил два решения:

на Питоне: minimize-boolean-function.py

на Rust: minimize-boolean-function.rs

Функция с 8 переменными вычисляется на Rust за шесть секунд:
$ rustc minimize-boolean-function.rs

$ /usr/bin/time ./minimize-boolean-function

Truth table: 0000000000X10000000000000000000000000000000000000000000000000000010X010X010X010X010X010X010X010X010X010X010X010X010X010X010X010X00000000001X0000000000000000000000000000000000001X1X1X1X1X1X1X1X0000000000000000000000000000000000000000000000000000000000000000
8-variable result: ~ABH + ~B~C~DE~FG + A~BCD
6.26 real 6.22 user 0.03 sys
spamsink: (Default)

[personal profile] spamsink 2025-06-11 01:48 am (UTC)(link)
А на Питоне за сколько минут?
spamsink: (Default)

[personal profile] spamsink 2025-06-11 03:03 am (UTC)(link)
~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH + ~ABH

Что за бардак?
spamsink: (Default)

[personal profile] spamsink 2025-06-11 06:16 pm (UTC)(link)
ИИ такой ИИ.
spamsink: (Default)

[personal profile] spamsink 2025-06-11 10:38 pm (UTC)(link)
А также мудрость и хитрость.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2025-06-11 12:30 pm (UTC)(link)
This is fucking impressive!!!
juan_gandhi: (Default)

[personal profile] juan_gandhi 2025-06-11 04:37 pm (UTC)(link)
У естественного ума иной раз тоже бывают проблемы. Сейчас рефакторю мои старые тесты...

[personal profile] flamedancerii 2025-06-20 03:52 pm (UTC)(link)
Самое продвинутое, что я накопал в свое время по теме был https://en.wikipedia.org/wiki/Espresso_heuristic_logic_minimizer , проект старый.
Мое личное, ничем не подкрепленное мнение: минимизация булевских функций стала сильно пересекаться с криптографией и тему из паблика убрали.
Там еще можно как-то минимизировать через SAT solvers, но это руки не дошли.
А Квайна МакКласки я, замахавшись студентом рисовать карты Карно, написал на Basic на ПК-01 "Львов" влет, получил ответ и дурак выключил, лень было магнитофон подключать.
Через неделю на Spectrum повторить не смог.
Edited 2025-06-20 15:55 (UTC)