Перестановки множества чисел с бинарными операторами - PullRequest
0 голосов
/ 19 апреля 2020

Давайте дадим набор чисел. Вставив элементы другого набора, состоящего из двоичных операторов между ними, и сгруппировав выражения со сбалансированными скобками, найдите все возможные перестановки.

Сложной частью вопроса является коммутативное поведение некоторых бинарных операторов. Например, если выражение (2 + 3) * 5 найдено, тогда нет необходимости вычислять выражения (3 + 2) * 5, или 5 * (2 + 3), или 5 * (3 + 2) из-за коммутативной идентичности операторов + и *. Их прежние эквиваленты нужно игнорировать.

Другим аспектом этого вопроса является группировка через сбалансированные скобки. Учитывая 2 * 3 + 5, группировка 2 * (3 + 5) дает отчетливый результат, но (2 * 3) + 5, или даже (((2 * 3)) + 5) просто создает дубликаты.

Существуют ли какие-либо алгоритмы для решения проблем такого типа? Как можно найти все перестановки выражений с оптимизацией коммутативного поведения бинарных операторов и фильтрацией скобок, которые приводят к дублированию?

...