У меня есть файл данных, который выглядит следующим образом:
<code>
0.5, 0.0 [
1.5, -1.0 [
inputs
]
;
0.5, 1.0 [
inputs
]
]
, который я пытаюсь разобрать в древовидную структуру.В приведенном выше примере дерево должно выглядеть примерно так:
Node (0.5, 0.0)
/ \
Node (1.5, -1.0) Node (0.5, 1.0)
\ /
Inputs Node
В значительной степени древовидная структура похожа на любое базовое дерево (за исключением того, что все самые нижние узлы соединяются с одним входным узлом.
Пока, чтобы разобрать его, у меня есть следующее:
private void createSubLayer (String net, Node parent, int level) {
level++;
String[] nodes = net.split(";");
for (String node : nodes) {
if (node.equals("inputs")) {
System.out.println("Connecting input @ " + level);
for (Node n : inputs) {
parent.connect(n);
}
}
else {
Node newNode;
String[] nodeInfo = node.split("\\[", 2);
String nodeDetails = nodeInfo[0];
System.out.println(nodeInfo.length);
System.out.println(nodeDetails);
String subNet = nodeInfo[1].substring(0, nodeInfo[1].length() - 1);
String[] nodeTW = nodeDetails.split(",");
double threshhold = Double.parseDouble(nodeTW[0]);
double weight = (nodeTW.length == 2) ? Double.parseDouble(nodeTW[1]) : 0.0;
newNode = new Node(threshhold);
newNode.setWeight(weight);
System.out.println("Connecting new node @ " + level + "\n\tThreshhold: " + threshhold + "\n\tWeight: " + weight);
if (parent != null) {
parent.connect(newNode);
}
else {
root = newNode;
}
System.out.println("Using subnet: " + subNet);
createSubLayer(subNet, newNode, level);
}
}
}
И я звоню с помощью
createSubLayer(data_file_contents, null, 0);
Пока что это прекрасно работает дляочень базовые данные, такие как
1.9, 1.0[inputs]
Однако, проблема, кажется, возникает, когда я разделяю точку с запятой в первом примере. По очевидным причинам, разделение этого первого приводит к (используя первый пример):
0.5, 0.0 [
1.5, -1.0 [
inputs
]
и
0.5, 1.0 [
inputs
]
]
Что не является ожидаемым результатом.
Как мне изменить этот процесс анализа (или, если необходимо, изменитьструктура файла данных) для создания желаемых результатов? (не беспокойтесь о вызовах Node.connect () или о чем-либо еще, пока я могу получить правильную структуру)
Как довольно простое сравнение, это структурированиепо сути, как XML-документ, или JSON, или другие подобные форматы, просто не хватает имен атрибутов и узлов (поскольку в заказе всегда есть только два числовых атрибута и содержимое узла).
Спасибо за любую помощь!