У меня есть несколько групп, которые определяют отношения символов .. например:
[A B C]
[A D E]
[X Y Z]
Эти группы означают, что (для первая группа) символы A, B и C связаны друг с другом. (Вторая группа) Символы A, D, E связаны друг с другом ... и т. Д.
Учитывая все эти данные, мне нужно было бы поместить все уникальные символы в 1- массив измерений, в котором символы, которые так или иначе связаны друг с другом, будут расположены ближе друг к другу. Учитывая приведенный выше пример, результат должен быть примерно таким:
[B C A D E X Y Z]
или
[X Y Z D E A B C]
В этом результирующем массиве, поскольку символ A имеет несколько отношений (а именно с B и C в одной группе и с D и E в другой), он теперь расположены между этими символами, в некоторой степени сохраняя связь.
Обратите внимание, что порядок не важен. В результате X Y Z может быть размещен первым или последним, поскольку эти символы не связаны ни с какими другими символами. Однако важна близость связанных символов.
Мне нужна помощь в определении алгоритма, который принимает группы символьных отношений, а затем выводит одномерный массив, используя приведенную выше логику. Я пытаюсь понять, как это сделать, поскольку с реальными данными количество символов в группе отношений может варьироваться, также нет ограничений на количество групп отношений, и символ может иметь отношения с любым другим символом.
Чтобы еще больше проиллюстрировать сложность моей дилеммы, ЕСЛИ вы добавите еще одну группу отношений к приведенному выше примеру. Скажем:
[C Z]
Результат должен быть примерно таким:
[X Y Z C B A D E]
Обратите внимание, что символы Z и C теперь ближе друг к другу, поскольку их связь была усилена дополнительными данными. Все предыдущие отношения сохраняются и в результате.