Есть множество эллементов. Пары элементов могут быть связаны. Как выделить связные группы, и разделить их в местах, где связей мало?
Например
Не сложно выделить связную группу из элементов (1,2,3,4,5,6,7,8). Человеческим взглядом не сложно определить, что в этой группе есть тонкое место — единственная связь между элементами 6 и 8.
Как алгоритмически искать такие тонкие места и делить группы?
Вот исходная матрица из примера:
_ 0 1 0 0 0 0 0 0
0 _ 1 0 0 1 0 0 0
1 1 _ 0 0 1 0 0 0
0 0 0 _ 1 0 1 1 0
0 0 0 1 _ 0 0 1 0
0 1 1 0 0 _ 0 1 0
0 0 0 1 0 0 _ 1 0
0 0 0 1 1 1 1 _ 0
0 0 0 0 0 0 0 0 _
Буду рад любым материалам на русском языке или на языках программирования.
Добавлю, что из groupA не нужно удалять элемент 1, т.к. связь может и тонкая, но на этой связи к группе привязан только один элемент и данная связь вполне его выдержит. Тонкое место может состоять и из нескольких связей, если они соединяют подгруппы с большим колличеством элементов. И еще желательно рассмотреть ситуацию, с взвешенными связами:
P.S. Дискретную математику и т.д. давно не использовал, мог перепутать терминалогию.