Isethi engahlangene (i-Union-Find Algorithm) ku-PHP
Kushicilelwe: Februwari 16, 2025 12:34:57 UTC
Igcine ukubuyekezwa: Januwari 26, 2026 10:37:18 UTC
Le ndatshana ifaka ukuqaliswa kwe-PHP kwesakhiwo sedatha se-Disjoint Set, esivame ukusetshenziselwa i-Union-Find kuma-algorithms amancane esihlahla.
Disjoint Set (Union-Find Algorithm) in PHP
I-Disjoint Set (evame ukusetshenziselwa i-Union-Find aka Disjoint Set Union) isakhiwo sedatha esisetshenziselwa ukuphatha ukwahlukaniswa kwezakhi zibe ngamasethi angahlanganisiwe (angahlanganisiwe). Isekela imisebenzi emibili ebalulekile ngempumelelo:
- Thola: Nquma ukuthi iyiphi isethi yesakhiwo.
- I-Union: Ihlanganisa amasethi amabili ndawonye.
Lesi sakhiwo siwusizo kakhulu kuma-algorithms amancane esihlahla, njenge-algorithm ye-Kruskal.
Nginokuqaliswa kwe-algorithm ye-Kruskal esetshenziselwa ukukhiqiza ama-mazes angahleliwe ancike ekuqalisweni kwe-PHP engezansi kwe-Disjoint Set ukuhlanganisa amasethi. Uma unesithakazelo, ungayibona isenzo lapha: Kruskal sika Algorithm Maze Generator
Noma kunjalo, nakhu ukuqaliswa kwami kwe-PHP kwe-Disjoint Set:
{
private $parent = [];
private $rank = [];
public function __construct($size)
{
for ($i = 0; $i < $size; $i++)
{
$this->parent[$i] = $i;
$this->rank[$i] = 0;
}
}
public function find($x)
{
if ($this->parent[$x] != $x)
{
$this->parent[$x] = $this->find($this->parent[$x]);
}
return $this->parent[$x];
}
public function union($x, $y)
{
$rootX = $this->find($x);
$rootY = $this->find($y);
if ($rootX != $rootY)
{
if ($this->rank[$rootX] > $this->rank[$rootY])
{
$this->parent[$rootY] = $rootX;
}
elseif ($this->rank[$rootX] < $this->rank[$rootY])
{
$this->parent[$rootX] = $rootY;
}
else
{
$this->parent[$rootY] = $rootX;
$this->rank[$rootX]++;
}
}
}
}
Ngaphandle kokukhiqiza ama-mazes wokuzijabulisa, isakhiwo sedatha se-Disjoint Set singasetshenziswa nasezimweni zangempela.
Ake ucabange, ngokwesibonelo, inethiwekhi yokuxhumana nabantu engathanda ukuphakamisa abangane abasha kubasebenzisi bayo, bese sithi sinabantu abayisithupha abanobudlelwano bobungani obuvele bukhona:
- I-1 no-2 bangabangane.
- 2 no-3 bangabangane.
- 4 no-5 bangabangane.
- 6 Awunabo abangane.
Ukusebenzisa i-algorithm ye-Union-Find kula maqembu ahlukene, kufanele sithole okulandelayo:
- I-1, 2 ne-3 eqenjini elilodwa.
- 4 no-5 eqenjini lesibili.
- 6 eqenjini lesithathu.
Ngokusekelwe kulokhu, kungaba nengqondo ukuphakamisa ukuthi u-1 no-3 kufanele babe abangane, ngoba banomuntu u-2 ngokufanayo.
Vele, esibonelweni esincane esinjengalesi, ungalibona kalula leli qiniso ngokwakho, kepha ukusebenza kahle kwale algorithm kuyivumela ukuthi ifinyelele ezigidini zabantu namaqembu abangane.
