diff --git a/tests/vault/gear/test-chain-load.hpp b/tests/vault/gear/test-chain-load.hpp index 9d416f3ff..4e170c0e1 100644 --- a/tests/vault/gear/test-chain-load.hpp +++ b/tests/vault/gear/test-chain-load.hpp @@ -118,6 +118,7 @@ namespace test { // using lib::meta::RebindVariadic; using util::min; using util::max; + using util::isnil; using util::limited; using util::unConst; using util::toString; @@ -284,21 +285,21 @@ namespace test { static Rule rule() { return Rule(); } TestChainLoad&& - seedingRule (Rule&& r) + seedingRule (Rule r) { seedingRule_ = move(r); return move(*this); } TestChainLoad&& - expansionRule (Rule&& r) + expansionRule (Rule r) { expansionRule_ = move(r); return move(*this); } TestChainLoad&& - reductionRule (Rule&& r) + reductionRule (Rule r) { reductionRule_ = move(r); return move(*this); @@ -317,7 +318,7 @@ namespace test { Node* node = &nodes_->front(); size_t level{0}; - // local copy of all rules (they are non-copyable, once engaged) + // local copy of all rules (non-copyable, once engaged) Rule expansionRule = expansionRule_; Rule reductionRule = reductionRule_; Rule seedingRule = seedingRule_; @@ -337,12 +338,13 @@ namespace test { return rule(n); }; - addNode(); // prime next with root node // visit all further nodes and establish links while (moreNodes()) { - ++level; curr->clear(); + if (isnil(next)) + addNode(); // ensure parent + ++level; swap (next, curr); size_t toReduce{0}; Node* r = nullptr; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 461008de1..8542ee731 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -96219,6 +96219,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + @@ -96246,6 +96256,19 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + + + @@ -96753,7 +96776,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + @@ -98444,9 +98467,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + - + @@ -98509,10 +98533,27 @@ Date:   Thu Apr 20 18:53:17 2023 +0200

+
+ + + + + +

+ Ab dem Zeitpunkt der ersten Anwendung müssen Regeln an einer festen Stelle im Speicher sitzen, da sie Referenzen intern binden. Deshalb macht buildTopology() sich nun jeweils eine lokale Kopie +

+ +
+ +
+ + + +
@@ -98634,6 +98675,37 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + +

+ Man möchte nämlich auch ganz normale Rendervorgänge  simulieren, nicht bloß extravagant komplexe Graphen. Denn im Normalfall ist der Abhängigkeitsgraph sehr klein, dafür aber werden immerfort neue Stränge begonnen. Wir brauchen also einen Mechanismus, der regelmäßig Stränge mitten im Graphen beendet. +

+ +
+ +
+ + + + + + + + + + + + + + + + @@ -98727,7 +98799,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + +
@@ -99167,6 +99243,183 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + + + + + +

+ Node mit mehr als einem Nachfolger +

+ + +
+
+ + + + + + +

+ Node mit mehr als einem Vorläufer +

+ + +
+
+ + + + + + +

+ Fortsetzung einer Kette mit genau einem Vorläufer und einem Nachfolger +

+ + +
+
+ + + + + + +

+ Node mit mehr als einem Vorläufer und mehr als einem Nachfolger +

+ + +
+
+ + + + + + +

+ die Zahl der ausgehenden Verbindungen minus der eingehenden Verbindungen;  ∑spread ≙ 0 (Konsistenz der Connectivity) +

+ + +
+
+
+ + + + + + + +

+ für einfache Topologien sollte das den konfigurierten Wahrscheinlichkeiten entsprechen; bei komplexeren Topologien beschreibt es das Gleichgewicht, und ist daher eine wesentliche Kennzahl +

+ + +
+ + +
+
+ + + + + + + +

+ da in einem breiteren Graph die viel mehr Nodes pro Level konzentriert sind, wachsen alle Gemmetrie-Kenndaten auch mit der Breite, was die Beurteilung des Verlaufs erschwert; daher ist es sinnvoll, eine Variante der lokalen Kennzahlen zu erstellen, die auf die Einheitsbreite normiert ist; erst dadurch wird ein zeitlicher Tredn im Gleichgewicht sichtbar +

+ + +
+ + +
+
+ + + + + + + +

+ man berechnet hierfür ein gewichtetes Mittel über die Level, gewichtet durch die jweilige Kennzahl; dadurch ergibt sich, wo die betr. Kennzahl schwerpunktmäßig aktiv ist. Das ist für alle Kennzahlen sinnvoll, selbst die Nodes (wo sind die meisten Nodes?). Die Standardabweichung könnte man dann auch gleich noch dazu berechnen (um die Breite der Verteilung zu kennzeichnen) +

+ + +
+ + +
+
+ + + + + + + +

+ analog zum einfachen gewichteten Level, nur daß hier die auf die Breite normierten Geometrie-Daten betrachtet werden; dadurch werden tatsächlich zeitliche Verläufe sichtbar +

+ + +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+ Ziemlich sicher werden wir zu Begin nur einen Bruchteil der möglichen Statisktiken berechnen, und es ist überhaupt nicht klar, ob wir jemals mehr brauchen +

+ + +
+
+
+ + + +