Я изо всех сил пытаюсь создать заголовок, описывающий то, что я пытаюсь решить, поэтому, пожалуйста, прокомментируйте, если у вас есть лучший заголовок!R/SQL/Python: Извлечение подключенных компонентов из пар узлов-узлов
Решение может быть в R, Python, или SQL (Aster Teradata SQL, чтобы быть точным, хотя решение любой язык SQL является очень полезным для целей обучения)
Проблема: Учитывая список пар элементов, не имеющих определенного порядка, генерирует вывод, который связывает все пары, которые связаны как минимум с одной ссылкой.
Вот простой пример с использованием Р:
colone = c("a","b","u","e","f","f","j","z")
coltwo = c("b","c","c","a","g","h","h","y")
d <- data.frame(colone, coltwo)
d
colone coltwo
1 a b
2 b c
3 u c
4 e a
5 f g
6 f h
7 j h
8 z y
Желаемый выход (в любой легко читаемой структуры данных):
(a,b,c,e,u)
(f,g,h,j)
(y,z)
По существу, вход представляющий собой график узлов и ребер , Выбранный список - это список всех объектов в связанном графе.
Любая помощь или мысли будут оценены!
Вопрос немного неясен. Я не понимаю ожидаемый результат. – ZdaR
@ZdaR Я обновил вопрос с большим количеством объяснений по проблеме - я понял, что это по сути вопрос графа. – so13eit
Это называется [tag: connected-components], который является транзитивным замыканием вашего отношения. Это стандартный пример для задачи, которая требует итеративного подхода и не может быть смоделирована в чистом SQL (и, следовательно, является мотивацией для PL/SQL и подобных расширений). –