Я только что начал с Генетическое программирование, и у меня возникают проблемы с инициализацией моего населения.Двоичное дерево Генетическое программирование
Мне нужно дерево для представления каждого решения кандидата. Проблема заключается в том, что я незнаком с деревьями.
Есть два способа инициализации, что мне нужно, а именно Grow (дерево переменного размера) и Полный (сбалансированный одинаковой формы и размера дерева).
FULL GROW
(*) (*)
(+) (-) (5) (-)
(1)(2) (3)(4) (6) (7)
Я инициализируется мой класс Tree, однако, я не знаю, как поступить здесь и далее заполнить дерево (либо полное или Grow).
public class Tree{
Object value;
Tree left, right;
public Tree(Object value)
{
this.value=value;
}
public Tree (Object value, Tree left, Tree right)
{
this.value = value;
this.left = left;
this.right = right;
}
// Getter & setter for the value.
public Object getValue(){
return value;}
public void setValue(Object value){
this.value = value;}
// Getters & setters for left & right nodes.
public Tree getLeft(){
return left;}
public Tree getRight(){
return right;}
public void setLeft(Tree ln){
left = ln;}
public void setRight(Tree rn){
right = rn;}
}
Может ли кто-нибудь любезно рассказать мне, как это можно сделать, или даже просто подтолкнуть в правильном направлении.
Я пытаюсь случайно заполнить деревья до предопределенной глубины.
- Операторы (+ -/*) вставляются повсюду, кроме листовых узлов.
- Операнды (1-100) вставляются только на листовых узлах
Благодарности.
Привет, извините, я редактировал свое оригинальное сообщение с ясностью. Я пытаюсь случайным образом генерировать дерево с предопределенной глубиной с операторами и операндами. – Leo
Спасибо! Это именно то, что я искал! – Leo