我有一个由150万对元素组成的数组(用''分隔):
$array {
[0] => "element1 element2"
[1] => "element2 element3"
[2] => "element8 element4"
[3] => "element8 element5"
[4] => "element4 element5"
[5] => "element6 element7"
[6] => ...
}
每对元素都是唯一的,元素是15到20个字符的字符串。
在我的管道中,这个数组意味着[0]“element1与element2相关”,[1]“element2与element3相关”,...... 我想将所有相关元素聚集在一起,得到类似于的输出:
$array_output {
[0] => "element1 element2 element3"
[1] => "element8 element4 element5"
[2] => "element6 element7"
[3] => ...
}
我想这个任务非常简单,我可能错过了一个明显的方法,但我没有找到一种快速的方法来聚集我的元素(即从几分钟到几个小时)。
答案 0 :(得分:0)
您有一个表示为邻接列表的图形,并且您希望将其转换为图形的连接组件列表。执行此操作的最佳方法是构建已连接的节点集,并为每个边合并它们,直到您没有更多边。
在PHP中执行此操作:
[["element1", "element2"],["element2","element3"]]
等。)["element1" => ["element1"],"element2" => ["element2"]]
等)。您将需要使用引用运算符(&
)以便在(3)中重用相同的数组。该算法在Java中更容易实现,或者具有更明显的散列图和哈希表。