алгоритм -минимизация логических выражений

Я пытаюсь написать фрагмент кода, который может сократить LENGTH логического выражения до минимума, поэтому код должен уменьшить количество элементов в выражении до минимума. Прямо сейчас я застрял, и мне нужна помощь =[

Вот правило :в логическом выражении может быть произвольное количество элементов, но оно содержит только операторы И и ИЛИ плюс скобки.

Например, если я передам логическое выражение :ABC+BCD+DE, оптимальным выводом будет BC (A+D )+DE, что сэкономит 2 единицы пространства по сравнению с исходным, потому что два БК объединены в один.

Моя логика заключается в том, что я попытаюсь найти наиболее часто встречающийся элемент в выражении и выделить его. Затем я рекурсивно вызываю функцию, чтобы сделать то же самое с факторизованным выражением, пока оно не будет полностью факторизовано. Однако как мне найти наиболее распространенный элемент в исходном выражении? То есть в приведенном примере БК? Похоже, мне придется перепробовать все различные комбинации элементов и найти, сколько раз каждая комбинация появляется во всем выражении. Но это звучит очень наивно. Второй

Может кто-нибудь подсказать, как это сделать эффективно? Подойдут даже некоторые ключевые слова, которые я могу найти в Google.

7
задан Nakilon 27 August 2014 в 14:59
поделиться