Чтобы яснее объяснить свой вопрос, я начну с объяснения реального случая, с которым я столкнулся.
] Я создаю физическую панель со многими словами, которую можно выборочно подсвечивать, чтобы составлять предложения. Вот моя ситуация:
Пример:
SENTENCES:
"A dog is on the table"
"A cat is on the table"
SOLUTIONS:
"A dog cat is on the table"
"A cat dog is on the table"
Я попытался подойти к этой проблеме с помощью «позиционных правил», которые находили для каждого УНИКАЛЬНОГО слова в наборе ВСЕ слова, используемые во ВСЕХ предложениях, какие слова должны быть слева или справа от него. В приведенном выше примере набор правил для слова «on» будет следующим: «left (A, dog, cat, is) + right (the, table)».
Этот подход работал для тривиальных случаев, но моя реальная ситуация есть две дополнительные трудности, из-за которых я застрял, и обе они связаны с необходимостью повторения слов :
РЕДАКТИРОВАТЬ: Уровень сложности
Из первого круга ответов кажется, что фактический уровень сложности (то есть, насколько предложения отличаются друг от друга) является важным фактором. Итак, вот некоторая информация по этому поводу:
Для этого проекта я использую python, но любой язык достаточно читабелен (например: НЕ обфусцированный perl!) Будет хорошо.
Заранее спасибо за ваше время!