Diziyi bir ağaç olarak görüntülemek için nasıl bir işlev oluşturabilirim. Mesela, dalların değerlerine dayanan yapraklara ulaşana kadar yürümek istediğim bir karar ağacı elde etmek istiyorum. Ben bağırma gibi ağaç oluşturmak:Diziyi bir ağaç olarak görüntülemek için nasıl bir işlev oluşturabilirim?
$tree= new DS_Tree();
$node=array('name' => 'start');
$tree->insert_node($node);
$tree->goto_root();
$mytree = new id3();
$mytree->init($data_array_AttrList,$data_array_values,$data_class,$data_array_instances,$tree);
$mytree->run();
echo '<pre class="brush: php">';
print_r($mytree->tree->draw_tree());
echo '</pre>';
fonksiyon draw_tree()
geçerli:
public function draw_tree() {
return $this->nodes;
}
benim ağaç oluşturur fonksiyonudur:
private function make_tree($attr) {
foreach($this->Values[$attr] as $v) {
$subset = $this->get_subset($attr, $v);
if($the_class = $this->has_same_class($subset)) {
$node =array(
'name' => $attr,
'arc' => $v
);
$this->tree->insert_node($node);
$this->Instance = array_diff_key($this->Instance, $subset);
} else {
$node =array(
'name' => $this->Classa,
'arc' => $v
);
$unresolved = $this->tree->insert_node($node);
}
}
if (isset($unresolved)) {
$this->tree->goto_index($unresolved);
}
}
}
sonucudur:
Array
(
[0] => Array
(
[name] => Time
[parent] =>
[children] => Array
(
[0] => 1
)
)
[1] => Array
(
[name] => Focus
[arc] => Array
(
[0] => 2 day/week
[1] => 3 day/week
[2] => 4 day/week
[3] => 5 day/week
[4] => 6 day/week
)
[parent] => 0
[children] => Array
(
[0] => 2
)
)
[2] => Array
(
[name] => Dificulty
[arc] => Array
(
[0] => Weght loss
[1] => Mantain weight
[2] => Gain Mass
)
[parent] => 1
[children] => Array
(
[0] => 3
)
)
[3] => Array
(
[name] => Sex
[arc] => Array
(
[0] => Beginner
[1] => Intermediar
[2] => Advance
)
[parent] => 2
[children] => Array
(
[0] => 4
)
)
[4] => Array
(
[name] => Array
(
[Exercise] => Array
(
[0] => Array
(
[0] => Ex1
[1] => Ex2
[2] => Ex3
[3] => Ex4
[4] => Ex5
)
)
)
[arc] => Array
(
[0] => F
[1] => M
)
[parent] => 3
)
)
ve bu ağacı nasıl yürütebilirim? çünkü kullanıcı – Ciro
'dan gelen giriş verileriyle karşılaştırmak istiyorum. Sorunuzu güncelleyebilir ve bu tür bir girdi verebilir misiniz? – trincot
kullanıcı böyle bir giriş tanıtmak ise örneğin: Zaman = 2 gün/hafta, Odak = = EX2 (örneğin) – Ciro