Позвольте мне проиллюстрировать возможный подход:
- Пусть ваше предложение будет
A B C
- Пусть у каждого слова есть наборы, т. Е.
{A:(a1, a2, a3), B:(b1), C:(c1, c2)}
- Теперь формируем возможные наборы наборов:
(a1, b1, c1), (a1, b1, c2), (a2, b1, c1) ... (a3, b1, c2)
- Определить функцию
F(a, b, c)
, которая возвращает расстояние (балл) между (a, b, c).
- Вызовите F для каждого набора синхронизации.
- Выберите набор с максимальным счетом.
Для начала, функция F может просто вернуть произведение обратного числа узлов между двумя узлами:
Развернуть (Продукт [i = 0 до len (предложение); j = 0 до len (предложение)] (1 / D (node_i, node_j)))
Позже вы можете увеличить его сложность.