| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- class Nodes_path_analys {
- function trasuj($wezel,$last_wezel=null,$sciezka=null) {
- //dla pierwszego wpisu z linkow, dopisuje kolejny wpis do sciezki
- // dla kolejnego wpisu, tworze nowa sciezke
- //ignorujemy cofanie sie
- $licznik=0;
- // echo "<br>".__CLASS__.":".__FUNCTION__.":".__LINE__.". sciezka:".$sciezka." Jade wezel ".$wezel." ostatni wezel to ".$last_wezel;
- foreach($this->wezly->$wezel as $link=>$link_) {
-
- //echo "<br> Anal:link:".$link." ";
- if($link!=$last_wezel) { //ignorujemy cofanie sie
- if($licznik==0) { //pierwszy link
-
- $akt_sciezka=$this->sciezki[$sciezka];
- if(!in_array($link, $this->sciezki[$sciezka])) {
- //echo " dopisuje sciezke(".$link.")";
- $this->sciezki[$sciezka][]=$link;
- end($this->sciezki); //ustawiam arraya na koncu
- self::trasuj($link,$wezel,$sciezka);
- }
- } else { //koljny link
- if(!in_array($link, $this->sciezki[$sciezka])) {
- end($this->sciezki); //ustawiam arraya na koncu
- //echo "<br> Rozgalezienie na wezle ".$wezel." dla linku ".$link;
- //print_r($this->sciezki);
- $aktualny_nr_sciezki=key($this->sciezki);
-
-
- $this->sciezki[]=array(); //tworze nowa sciezke
- end($this->sciezki); //ustawiam arraya na koncu
- $nowy_nr_sciezki=key($this->sciezki); //ustalam jaki jest numer nowej sciezki
- $this->sciezki[$nowy_nr_sciezki]=$akt_sciezka; //kopiuje poprzednia sciezke
-
- $this->sciezki[$nowy_nr_sciezki][]=$link; //dopisuje jej link
-
-
- echo "\n// <br> - Utwozrylem kolejna sciezke nr ".$nowy_nr_sciezki." podczas gdy aktualna zawartosc sceizki(".$aktualny_nr_sciezki.")";
- //print_r($this->sciezki[$nowy_nr_sciezki]);
- echo "// <hr>";
- self::trasuj($link,$wezel,$nowy_nr_sciezki);
- }
-
- }
- $licznik=$licznik+1;
-
- } //else echo "(zignorowalem cofanie sie dla ".$link." )";
- }
-
-
- }
-
- function trasuj_wezly($wezly,$unlayed=null) {
- $this->wezly=$wezly;
- // print_r($this->wezly);
- $this->sciezki=array();
- foreach($this->wezly as $wezel=>$links){
- if(isset($unlayed)) {
- if(!in_array($wezel, $unlayed)) continue;
- }
-
- $this->sciezki[]=array(); //tworze nowa sciezke
- end($this->sciezki); //ustawiam arraya na koncu
- $aktualny_nr_sciezki=key($this->sciezki);
-
- $this->sciezki[$aktualny_nr_sciezki][]=$wezel;
- echo "\n// <br><font color=red><b> jade gl ".$wezel."</b> nr sciezki to:".$aktualny_nr_sciezki.":::".__CLASS__.":".__FUNCTION__.":".__LINE__."</font><br>";
- // print_r($this->sciezki);
- self::trasuj($wezel,$last_wezel,$aktualny_nr_sciezki);
- // print_r($this->sciezki);
- }
-
- return $this->sciezki;
- }
-
-
- function najdluzsza_sciezka() {
-
- $najdluzsza=0;
- $max_dlugosc=0;
-
- foreach($this->sciezki as $sciezka=>$trasa) {
- if($max_dlugosc<count($trasa)) {
-
- $najdluzsza=$sciezka;
- $max_dlugosc=count($trasa);
- }
-
-
- }
-
- echo "\n /* <br> 99 Najdluzsza sciezka to ".$najdluzsza.", a jej dlugosc to ".$max_dlugosc;
- print_r($this->sciezki[$najdluzsza]); echo "\n*/";
- return $najdluzsza;
-
- }
-
- }
|