Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > ใครมี มีตัวอย่าง code DepthFirstSearch ภาษาphp+++++++ขอดูเป็นตัวอย่างหน่อยคาบ



 

ใครมี มีตัวอย่าง code DepthFirstSearch ภาษาphp+++++++ขอดูเป็นตัวอย่างหน่อยคาบ

 



Topic : 049804



โพสกระทู้ ( 29 )
บทความ ( 0 )



สถานะออฟไลน์




ที่แสดงข้อมูลแบบทางเลือก
เช่น ต้องการเดินทางจาก a ไป g คือให้แสดงเส้นทางที่สามารถไปได้อะครับ
ทางเลือกที่ 1 เลือกเดินทาง a>b>c>d>e>f>g หมายเหตุ *เส้นทางที่สั้นที่สุด หมายถึงการรวมจากระยะทางจากจุดต่อจุดแล้วได้สั้นสุด
ทางเลือกที่ 2 เลือกเดินทาง a>h>j>u>r>g
ทางเลือกที่ 3 เลือกเดินทาง a>h>y>u>p>g




ขอความช่วยเหลือด้วยครับ
เอาเป็น code dijkistra ก็ได้ครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2010-10-06 00:44:14
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-10-05 21:49:09 By : wisan191 View : 845 Reply : 2
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


สร้าง tree ก่อน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-05 22:46:01 By : tungman
 


 

No. 2

Guest


<?php

class state_space_graph{

    var $connected;
    var $start_state;
    var $goal_state;

    function connectedList($state,$connectedListArray){
        $a = array();
        for ($i=0;$i<count($connectedListArray);$i++){
            $cla=$connectedListArray[$i];
            if ($state==$cla{0} && $state!=$cla{1}){
                    if ( !in_array($cla{1},$a)){
                        $a[] = $cla{1};
                    }
            } elseif ($state==$cla{1} && $sate!=$cla{0}){
                    if ( !in_array($cla{0},$a)){
                        $a[] = $cla{0};
                    }
            }
        }
        return $a;
    }

    function state_space_graph($nodeList,$connectedList,$start,$goal){
        $a = explode(',',$nodeList);
        $b = explode(',',$connectedList);
        $this->start_state = $start;
        $this->goal_state = $goal;
        for ($i=0;$i<count($a);$i++){
            $this->connected[$a[$i]] = $this->connectedList($a[$i],$b);
        }
    }

    function has_children($cs,&$sl,&$nsl,&$de,&$children){
        $children = '';
                for ($i=0;$i<count($this->connected[$cs]);$i++){
                    if ( false===strpos($sl,$this->connected[$cs][$i]) &&
                        false===strpos($nsl,$this->connected[$cs][$i]) &&
                        false===strpos($de,$this->connected[$cs][$i]))
                    {
                        $children = $children.$this->connected[$cs][$i];
                    }
                }
        return strlen($children);
    }

    function remove_front(&$list){
        $list = substr($list,1);
    }

    function add_front(&$list,$cs){
        $list = $cs.$list;
    }

    function define_empty(&$list){
        $list = '';
    }

    function first_element(&$list){
        return substr($list,0,1);
    }

    function path($list){
        if (strlen($list)>0){
            $s = $list{0};
        }else{
            $s = '';
        }
        for ($i=1;$i<strlen($list);$i++){
            $s = $s.','.$list{$i};
        }
        return $s;
    }

    function pathrev($list){
        if (strlen($list)>0){
            $s = $list{0};
        }else{
            $s = '';
        }
        for ($i=1;$i<strlen($list);$i++){
            $s = $list{$i}.','.$s;
        }
        return $s;
    }

    function backtrack(){

            $cs = $this->start_state;
            $goal = $this->goal_state;
            $this->add_front($sl,$cs);
            $this->add_front($nsl,$cs);
            $this->define_empty($de);

                    echo '<table border=1 cellpadding=0 cellspacing=0 width=500>'
                    .'<tr bgcolor=silver><th>CS'.'</th><th>SL'.'</th><th>NSL'.'</th><th>DE'.'</th></tr>';

                    while (strlen($nsl) != 0) {

                            echo '<tr align=right bgcolor=gainsboro><td>&nbsp;'.$cs
                            .'</td><td>&nbsp;'.$this->path($sl)
                            .'</td><td>&nbsp;'.$this->path($nsl)
                            .'</td><td>&nbsp;'.$this->path($de).'</td></tr>';

                            if ($cs==$goal) break;
                            if ( !$this->has_children($cs,$sl,$nsl,$de,$children)){

                                    //echo '<tr><td>no have</td></tr>';
                                    while (strlen($sl) != 0 && $cs==$this->first_element($sl)){
                                            $this->add_front($de,$cs);
                                            $this->remove_front($sl);
                                            $this->remove_front($nsl);
                                            $cs = $this->first_element($nsl);
                                    }
                                    $this->add_front($sl,$cs);

                            } else{

                                    //echo '<tr><td>have</td></tr>';

                                    $this->add_front($nsl,$children);
                                    $cs = $this->first_element($nsl);
                                    $this->add_front($sl,$cs);

                            }

                    }
                    echo '</table>';

            return ($cs==$goal?$sl:false);

    }/* bracktrack function */

}

echo '<html><head><title>state space search</title></head><body>';

$g = new state_space_graph('A,B,C,D,E,F,G,H,I,J','AB,AC,AD,BE,BF,EH,EI,FJ,CF,CG','A','G');

$solution_path = $g->backtrack();

echo 'start = '.$g->start_state.'<br>';
echo 'goal = '.$g->goal_state.'<br>';
echo ($solution_path?'solution path is <b>'.$g->pathrev($solution_path).'.</b>':'don\'t found goal.');

echo '</body></html>';

?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-05 23:12:25 By : xyz
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ใครมี มีตัวอย่าง code DepthFirstSearch ภาษาphp+++++++ขอดูเป็นตัวอย่างหน่อยคาบ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่