作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚开始使用基因编程,但在初始化种群时遇到了问题。
我需要一棵树来表示每个候选解决方案 - 问题是,我不熟悉树。
我需要两种初始化方式,即Grow(可变大小的树)和Full(平衡的相同形状和大小的树)。
FULL GROW
(*) (*)
(+) (-) (5) (-)
(1)(2) (3)(4) (6) (7)
我已经初始化了我的 Tree 类,但是,我不知道如何从这里开始填充树(Full 或 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;}
}
谁能告诉我如何做到这一点,或者只是向正确的方向轻推一下。
我正在尝试随机填充树直到达到预定义的深度。
谢谢。
最佳答案
不是很清楚你想要什么。你是问如何表示你给的例子,或者如何实现根据两种策略之一生成随机树的方法?
您的示例可以用您的 Tree 类以这种方式表示:
Tree full = new Tree("*",
new Tree("+", new Tree(1), new Tree(2)),
new Tree("-", new Tree(3), new Tree(4)));
Tree grow = new Tree("*",
new Tree(5),
new Tree("-", new Tree(6), new Tree(7)));
[编辑]
您可以使用以下类中的方法随机生成树:
class TreeGenerator {
private static final String[] OPERATORS = {"+", "-", "/", "*"};
private static final int MAX_OPERAND = 100;
private static Random random = new Random();
public static Tree full(int depth) {
if (depth > 1) {
String operator = OPERATORS[random.nextInt(OPERATORS.length)];
return new Tree(operator, full(depth - 1), full(depth - 1));
} else {
return new Tree(random.nextInt(MAX_OPERAND) + 1);
}
}
public static Tree grow(int depth) {
if (depth > 1 && random.nextBoolean()) {
String operator = OPERATORS[random.nextInt(OPERATORS.length)];
return new Tree(operator, grow(depth - 1), grow(depth - 1));
} else {
return new Tree(random.nextInt(MAX_OPERAND) + 1);
}
}
}
然后,你可以这样做:
Tree full3 = TreeGenerator.full(3);
Tree grow4 = TreeGenerator.grow(4);
关于java - 二叉树遗传规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764480/
如何将 solr 与 heritrix 集成? 我想使用 heritrix 归档一个站点,然后使用 solr 在本地索引和搜索该文件。 谢谢 最佳答案 使用 Solr 进行索引的问题在于它是一个纯文本
我的任务: 创建一个程序来仅使用基元(如三角形或其他东西)复制图片(作为输入给出)。该程序应使用进化算法来创建输出图片。 我的问题: 我需要发明一种算法来创建种群并检查它们(它们与输入图片的匹配程度
我看过几篇文章和文章,建议使用模拟退火等方法来避免局部最小值/最大值问题。 我不明白为什么如果您从足够大的随机人口开始,这将是必要的。 这只是确保初始人口实际上足够大和随机的另一项检查吗?或者这些技术
我是一名优秀的程序员,十分优秀!