Sergant's Home Page
О проекте Минимизация..
Данный проект начался еще на третьем курсе учебы в СПбГЭТУ, когда у нас был курсовик по предмету "Теория Автоматов". Там приходилось минимизировать функции по 6-8 переменных, причем иногда требовалась совместная минимизация функций. В общем тогда-то у меня и зародилась идея сделать некую программку, которая бы минимизировала введенную булеву функцию..

Сказано - сделано.. Было перелопачено куча литературы по дискретной математике, найдено описание метода минимизации по Квайну - Мак - Класски. В те далекие времена о программировании под "Винды" я имел очень смутное представление, поэтому изначально проект реализовывался в Watcom C++ 11.0b. Было куча мелких проблем, нестыковок, и т.п. Несколько раз переписывались структуры. В конце концов я реализовал все в классах (как раз тогда шел курс Объектно-ориентированное программирование в университете :)

В то время вводить функцию приходилось в виде массива в исходнике программы :), что, как вы понимаете, было не совсем удобно, а если серьезно, то совсем неудобно. Вобщем начал я искать, как прикрутить мышку в Watcom'e. Дело было в том, что я писал программу под екстендер dos4gw с линейной памятью в защищенном режиме, и как сделать там отлов прерываний мыши, я в то время не знал.. Вобщем, сессия тогда прошла, спешить было некуда, и я на этот проект забил..

Вспоминал я о проекте время от времени (в основном во время очередной сессии, когда надо было готовиться к экзаменам, у меня вдруг обнаруживался интерес в дописывании и переписывании программы :) Разобравшись с маусом, проект немного продвинулся, и уперся в минимизацию частично определенных функций. Дело в том, что используя только метод Квайна - Мак - Класски невозможно минимизировать частично определенные функции. В общем опять поиски литературы, пиво, етс..

Через некоторое время нашел метод Петрика, который используется как дополнение к минимизации по Квайну - Мак - Класски, но реализовать его в программе, мне удалось только некоторое время спустя...

И вот наконец, где-то год назад, я собрался с духом, перечитав кучу информации по компиляторам, остановился на MSVC 6.0. Начал я изучение этого Вижуал С++ с MFC. В то время я расшифровывал формат графических файлов (монстров) в Wizardry VII Gold и мне необходимо было написать утилиту для вывода результата. Подробней об этом можно почитать тут. Через некоторое время после этого, ближе к зиме, я решил все-таки доделать интерфейс для минимизации под "Винды". Неделя ушла на разбор старого исходника, я в то время писал без комментариев, хехе.

Было выпито много пива, и в конце-концов я вспомнил, что к чему. Написал вывод функции в виде карты Карно и задумался о том, как обрабатывать нажатие мыши, и менять состояние клетки в месте нажатия %. Озарение долго не приходило... И тут, я набрел на некий сайт, где разбиралось обучение MFC по шагам, ура !. Так или иначе, весной 2001 года я доделал Интерфейс программы. Неделю назад я подумал, а почему бы не выложить программу на обозрение другим людям, которым она может быть нужна сейчас, как была нужна мне года 3 назад :)