Chain-Load: design considerations
...develop the idea for building the necessary DAG data structure...
This commit is contained in:
parent
c8f13ca3e6
commit
3ff25c1e9f
3 changed files with 281 additions and 16 deletions
|
|
@ -60,21 +60,43 @@ namespace test {
|
|||
run (Arg)
|
||||
{
|
||||
simpleUsage();
|
||||
verify_Node();
|
||||
|
||||
witch_gate();
|
||||
}
|
||||
|
||||
|
||||
/** @test TODO demonstrate simple usage of the test-load
|
||||
* @todo WIP 11/23 🔁 define ⟶ 🔁 implement
|
||||
*/
|
||||
void
|
||||
simpleUsage()
|
||||
{
|
||||
UNIMPLEMENTED ("setup of TestChainLoad");
|
||||
TestChainLoad testLoad;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @test TODO diagnostic blah
|
||||
* @todo WIP 11/23 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
verify_Node()
|
||||
{
|
||||
using Node = TestChainLoad<>::Node;
|
||||
|
||||
Node n0;
|
||||
CHECK (n0.hash == 0);
|
||||
|
||||
Node n1{23}, n2{55};
|
||||
CHECK (n1.hash == 23);
|
||||
CHECK (n2.hash == 55);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @test TODO diagnostic blah
|
||||
* @todo WIP 11/23 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
witch_gate()
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@
|
|||
//#include <utility>
|
||||
//#include <string>
|
||||
//#include <deque>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <array>
|
||||
|
||||
|
||||
namespace vault{
|
||||
|
|
@ -91,19 +94,39 @@ namespace test {
|
|||
|
||||
/**
|
||||
* A Generator for synthetic Render Jobs for Scheduler load testing.
|
||||
* @tparam maxFan maximal fan-in/out from a node, also limits maximal parallel strands.
|
||||
* @see TestChainLoad_test
|
||||
*/
|
||||
template<size_t numNodes =256, size_t maxFan =16>
|
||||
class TestChainLoad
|
||||
: util::NonCopyable
|
||||
{
|
||||
|
||||
public:
|
||||
TestChainLoad ()
|
||||
struct Node
|
||||
: util::MoveOnly
|
||||
{
|
||||
size_t hash;
|
||||
|
||||
Node(size_t seed =0)
|
||||
: hash{seed}
|
||||
{ }
|
||||
};
|
||||
|
||||
private:
|
||||
using NodeStorage = std::array<Node, numNodes>;
|
||||
|
||||
std::unique_ptr<NodeStorage> nodes_;
|
||||
|
||||
public:
|
||||
TestChainLoad()
|
||||
: nodes_{new NodeStorage}
|
||||
{ }
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
|
||||
}}} // namespace vault::gear::test
|
||||
#endif /*VAULT_GEAR_TEST_TEST_CHAIN_LOAD_H*/
|
||||
|
|
|
|||
|
|
@ -95600,20 +95600,6 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1697740826362" ID="ID_1948434460" MODIFIED="1697740845523" TEXT="eine verifizierbare verzweigte Berechnungs-Last">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1697740865360" TEXT="in separatem Test entwerfen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1697741674433" TEXT="Nutzen vorher klären">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1697741661950" ID="ID_1735458016" MODIFIED="1697741661950" TEXT="Darstellung der Abhängigkeits-Struktur"/>
|
||||
<node CREATED="1697741689551" ID="ID_1012140830" MODIFIED="1697741694906" TEXT="Art der Datenübergabe"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697743909120" ID="ID_483537733" MODIFIED="1697743924734" TEXT="#1346 reproducible computational load">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697740877587" ID="ID_1275890321" MODIFIED="1697741670215" TEXT="TestChainLoad_test">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699657771858" ID="ID_492954771" MODIFIED="1699657774722" TEXT="Design">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699657791215" ID="ID_1285189810" MODIFIED="1699657803659" TEXT="Anforderungen">
|
||||
|
|
@ -95670,6 +95656,240 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1699660880003" ID="ID_1798983066" MODIFIED="1699660903256" TEXT="Am Anfang steht ein einziger Seed, am Ende ein einziges Ergebnis"/>
|
||||
<node CREATED="1699660593344" ID="ID_308815750" MODIFIED="1699660599239" TEXT="es darf keine Sackgassen geben"/>
|
||||
</node>
|
||||
<node CREATED="1699739502726" ID="ID_100018274" MODIFIED="1699739600848" TEXT="Skizze Konstruktion-Mechanismus">
|
||||
<node CREATED="1699739627261" ID="ID_1325395921" MODIFIED="1699739685912" TEXT="Knoten werden gemäß einer fortscheitenden Zeit geplant"/>
|
||||
<node CREATED="1699739687071" ID="ID_1937548794" MODIFIED="1699739704062" TEXT="gleichzeitig behandelte Knoten liegen nebeneinander in einer Liste"/>
|
||||
<node CREATED="1699739718296" ID="ID_403110705" MODIFIED="1699739741861" TEXT="standardmäßig erzeugt jeder Knoten seinen direkten Nachfolger an gleicher Listenposition"/>
|
||||
<node CREATED="1699739762606" ID="ID_833882306" MODIFIED="1699739894868" TEXT="Knoten können (optional, zufällig) verzweigen und damit mehr als einen Nachfolger haben"/>
|
||||
<node CREATED="1699739790303" ID="ID_1516261126" MODIFIED="1699739869967" TEXT="abgezweigte Nachfolger werden hinten an die Liste angehängt"/>
|
||||
<node CREATED="1699739912517" ID="ID_135334392" MODIFIED="1699740008956" TEXT="Knoten können (optional, zufällig) reduzieren und ihrem Nachfolger die Nachbarn zuführen"/>
|
||||
<node CREATED="1699740022103" ID="ID_1389601530" MODIFIED="1699740063029" TEXT="ein reduzierender Knoten sammelt seine N Nachbarn in der Liste ein"/>
|
||||
<node CREATED="1699740278358" ID="ID_218036409" MODIFIED="1699740327225" TEXT="Knoten können (optional, zufällig) neue Linien sähen, die ohne Vorgänger beginnen"/>
|
||||
<node CREATED="1699740463671" ID="ID_739895709" MODIFIED="1699740600826" TEXT="Für Anfang und Ende muß es eine Spezialbehandlung geben">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
....denn sonst könnte sich diese Struktur nicht entfalten, ohne die Wahrscheinlichkeiten gezielt global zu steuern. Zu Beginn muß einmal fest verzweigt werden, und zum Abschluss müssen einmalig alle noch offenen Knoten in einen Endknoten zusammengeführt werden.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1699740612853" ID="ID_1348403069" MODIFIED="1699740772960" TEXT="dieser Verknüpfungs-Mechanismus belegt eine fest vorgegebene Menge von Knoten">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Und das legt auch nahe, die Knoten selber im Block zu allozieren. Die Struktur wird dann sukzessive durch Herstellen von Verknüpfungen aufgebaut, und jeweils neue Knoten werden fortschreitend „belegt“
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699740841337" ID="ID_1118241544" MODIFIED="1699740847100" TEXT="Steuergrößen">
|
||||
<node CREATED="1699740923911" ID="ID_89015648" MODIFIED="1699740931518" TEXT="Gesamtanzahl der Knoten"/>
|
||||
<node CREATED="1699740848160" ID="ID_1083737857" MODIFIED="1699740871217" TEXT="maximale Parallelität als Limit (oder unlimitiert)"/>
|
||||
<node CREATED="1699740872445" ID="ID_764165766" MODIFIED="1699740899462" TEXT="Wahrscheinlichkeit und Zahl der Verzweigungen, Reduktionen, und Aussaht"/>
|
||||
</node>
|
||||
<node CREATED="1699741707890" ID="ID_1256754656" MODIFIED="1699741710733" TEXT="Konsequenzen">
|
||||
<node CREATED="1699741727888" ID="ID_1541171458" MODIFIED="1699741738034" TEXT="im Block liegen die Knoten geornet"/>
|
||||
<node CREATED="1699741738862" ID="ID_1619401622" MODIFIED="1699741755526" TEXT="Nachfolger stehen stets weiter hinten"/>
|
||||
<node CREATED="1699742835134" ID="ID_1616358648" MODIFIED="1699742850936" TEXT="alle Berechnungen und Traversierungen haben lineare Komplexität"/>
|
||||
<node CREATED="1699741773857" ID="ID_1389034436" MODIFIED="1699741790986" TEXT="der erste Strang ist ein Hauptstrang und geht bis zum letzten Knoten durch"/>
|
||||
<node CREATED="1699741891657" ID="ID_665327514" MODIFIED="1699741967486" TEXT="die Balance zwischen den Wahrscheinlichkeiten bestimmt die konkrete Form"/>
|
||||
<node CREATED="1699741993259" ID="ID_849845710" MODIFIED="1699742010072" TEXT="die Steuergrößen sollten als Funktionen konfigurierbar gemacht werden">
|
||||
<node CREATED="1699742017712" ID="ID_495841097" MODIFIED="1699742034394" TEXT="Input: aktueller Hash"/>
|
||||
<node CREATED="1699742075192" ID="ID_237749934" MODIFIED="1699742108816" TEXT="Output: Steuergröße (ja/nein, Anzahl)"/>
|
||||
<node CREATED="1699742121210" ID="ID_1698029431" MODIFIED="1699742134716" TEXT="Berechnung: typischerweise per Modulo und Mapping"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699742148860" ID="ID_1311053913" MODIFIED="1699742152869" TEXT="Einzel-Verfahren">
|
||||
<node CREATED="1699742169876" ID="ID_316920664" MODIFIED="1699742177318" TEXT="Topologie-Generierung">
|
||||
<node CREATED="1699742192457" ID="ID_1053661548" MODIFIED="1699742197580" TEXT="ist eine while-Schleife"/>
|
||||
<node CREATED="1699742209159" ID="ID_1003117104" MODIFIED="1699742221157" TEXT="arbeitet auf einer Liste von Pointern auf die Nodes"/>
|
||||
<node CREATED="1699742604779" ID="ID_853800288" MODIFIED="1699742636811" TEXT="es gibt immer alternierend die aktuelle-Liste und die Nachfolger-Liste"/>
|
||||
</node>
|
||||
<node CREATED="1699742858417" ID="ID_889440873" MODIFIED="1699742863350" TEXT="Traversierung">
|
||||
<node CREATED="1699742864986" ID="ID_999341690" MODIFIED="1699743013462" TEXT="Traversierung gemäß Verknüpfungslogik wäre möglich, ist aber nicht sinnvoll">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...und zwar da sie wegen der möglicherweise chaotischen Verknüpfungsstruktur schwierig zu programmieren und maximal aufwendig wäre. Das gilt entsprechend auf das Erzeugen des Schedule
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1699743015397" ID="ID_121499445" MODIFIED="1699743053875" TEXT="Traversierung über die Nodes im Block ist effizient und wird als Primitive bereitgestellt"/>
|
||||
</node>
|
||||
<node CREATED="1699743076352" ID="ID_1308611850" MODIFIED="1699743082136" TEXT="Kontroll-Berechnung">
|
||||
<node CREATED="1699743083178" ID="ID_905616190" MODIFIED="1699743095951" TEXT="ist eine einfache Traveriserung, die die Berechnungsfunktion jeder Node aufruft"/>
|
||||
<node CREATED="1699743096640" ID="ID_799638431" MODIFIED="1699743259682" TEXT="normalerweise nicht notwendig, da bereits ein Nebenergebnis der Topologie-Generierung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...denn auch die Topologie-Generierung braucht bereits eine Zufallszahl pro Node, und dafür nimmt man sinnvollerweise den berechneten Hash für diese Node, also ruft die Berechnungsfunktion der Node auf.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699743262759" ID="ID_1587309791" MODIFIED="1699743268330" TEXT="Scheduling">
|
||||
<node CREATED="1699743269428" ID="ID_1800079045" MODIFIED="1699743327693" TEXT="ist im allgemeinen sehr komplex und nur in einem Gesamtlauf möglich"/>
|
||||
<node CREATED="1699743335828" ID="ID_1767944235" MODIFIED="1699743352605" TEXT="erfordert zwingend, den Builder-Term jeder Node daselbst zu speichern"/>
|
||||
<node CREATED="1699743460240" ID="ID_1289587973" MODIFIED="1699743944810" TEXT="Paketweise Berechnung in Traversierung über die Nodes erfordert sinnvolles Scheduling">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Wenn man das Scheduling nicht auf einmal macht, bleiben gewisse Querverbindungen undeklariert, auch auf den Nodes, die man schon in den Schedulter übergeben hat. Da jedoch auf jeder »Zeitebene« für jeden parallelen Strang jeweils eine Node sitzt, können maximal die Verknüpfungen zur unmittelbar vorausgehenden Zeitebene fehlen; sofern man das nächste Paket für's Scheduling behandelt, <i>bevor diese unmittelbar vorhergehende Zeitebene</i> tatsächlich schon ihre Aktivierung erreicht hat, können diese Verbindungen noch nachgetragen werden.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699743998447" ID="ID_1213659188" MODIFIED="1699744020039" TEXT="Ausführung im Job-Funktor">
|
||||
<node CREATED="1699744023916" ID="ID_608257455" MODIFIED="1699744031292" TEXT="dieser bekommt lediglich den Pointer auf eine Node"/>
|
||||
<node CREATED="1699744035387" ID="ID_1158914" MODIFIED="1699744043229" TEXT="er ruft auf dieser die Berechnungsfunktion auf"/>
|
||||
<node CREATED="1699744050096" ID="ID_1428700914" MODIFIED="1699744063130" TEXT="welche wiederum auf den Hash der unmittelbaren Vorgänger zugreift"/>
|
||||
</node>
|
||||
<node CREATED="1699744066590" ID="ID_1514578963" MODIFIED="1699744080808" TEXT="Berechnungsergebnis und Reset">
|
||||
<node CREATED="1699744082676" ID="ID_452347724" MODIFIED="1699744093934" TEXT="der Hash wird direkt in der Node gespeichert"/>
|
||||
<node CREATED="1699744094850" ID="ID_616611323" MODIFIED="1699744117163" TEXT="sinnvollerweise löscht man diese Hash-Ergebnisse mit einer einfachen Traversierung"/>
|
||||
<node CREATED="1699744117849" ID="ID_1282471573" MODIFIED="1699744177667" TEXT="andernfalls würde man u.U. ein noch fehlendes Vorgänger-Ergebnis gar nicht bemerken"/>
|
||||
</node>
|
||||
<node CREATED="1699746556608" ID="ID_226221091" MODIFIED="1699746569941" TEXT="Darstellung der Topologie">
|
||||
<node CREATED="1699746571605" ID="ID_1609174286" MODIFIED="1699746742507" TEXT="Methode-1: Traversierung und Charakterisierung pro (Zeit)Ebene"/>
|
||||
<node CREATED="1699746746487" ID="ID_253753412" MODIFIED="1699746759472" TEXT="Methode-2: Graphviz-Ausgabe der Node-Struktur"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699744188230" ID="ID_594014522" MODIFIED="1699744195512" TEXT="Aufbau der Komponente">
|
||||
<node CREATED="1699744198940" ID="ID_1863041010" MODIFIED="1699748033571" TEXT="der maximale Fan-out/in ist ein Template-Parameter (der Node)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Begründung: man möchte mit dem Ding heftigen Druck erzeugen können. Daher muß es selbst performant implementiert sein; unkoordinierte Heap-Allokationen für Predecessor/Successor-Tabellen können wir uns da nicht gestatten.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1699747767421" ID="ID_1919787348" MODIFIED="1699747858585" TEXT="das impliziert auch eine Beschränkung der Paralell-Stränge">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
weil per Festlegung die letzte Node alles zusammenführen soll, und ich keinen komplizierteren Algorithmus programmieren will
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1699747802728" ID="ID_51577030" MODIFIED="1699747812490" TEXT="Argument: muß man halt entsprechend hochsetzen"/>
|
||||
</node>
|
||||
<node CREATED="1699753460661" ID="ID_385105279" MODIFIED="1699753482634" TEXT="die Node-Anzahl wird auch ein Template-Parameter">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1699753485288" ID="ID_1130708229" MODIFIED="1699753511088" TEXT="ich möchte unbedingt eine Block-Allokation und einfache Iteration"/>
|
||||
<node CREATED="1699753511761" ID="ID_344250236" MODIFIED="1699753736154" TEXT="und strebe letzlich nach weitgehend selbsterkläreendem Code"/>
|
||||
<node CREATED="1699753737406" ID="ID_171467229" MODIFIED="1699753756648" TEXT="leider bleiben daher nicht mehr viel Alternativen">
|
||||
<node CREATED="1699753758587" ID="ID_493828771" MODIFIED="1699753773589" TEXT="Vector verträgt keine NonCopyable payload"/>
|
||||
<node CREATED="1699753774273" ID="ID_1485627449" MODIFIED="1699753802497" TEXT="zu Fuß ein Array in unique_ptr ist unnötig komplex"/>
|
||||
<node CREATED="1699753804121" ID="ID_986288180" MODIFIED="1699753826262" TEXT="lib::ScopedCollection würde passen, ist aber selber komplex"/>
|
||||
<node CREATED="1699753828682" ID="ID_948083210" MODIFIED="1699753849171" TEXT="KISS ⟹ std::Array in unique_ptr"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1699744291112" ID="ID_1829758228" MODIFIED="1699744337180" TEXT="Builder-Syntax — aber die Node-Allokation erfolgt sofort (ctor-Parameter)"/>
|
||||
<node CREATED="1699744342169" ID="ID_1522319392" MODIFIED="1699744414936" TEXT="Traversierung und darauf aufbauende Einzel-Verfahren sind »Methoden«"/>
|
||||
<node CREATED="1699744435842" ID="ID_134211269" MODIFIED="1699744459669" TEXT="⟹ buildTopology() ist also der klassische Builder-Abschluß"/>
|
||||
<node CREATED="1699745687140" ID="ID_703752888" MODIFIED="1699745716356" TEXT="es gibt eine Sammlung von Standard-Bausteinen zur Parametrisierung der Steuergrößen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1699746791796" TEXT="in separatem Test entwerfen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1697741674433" TEXT="Nutzen vorher klären">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1697741661950" ID="ID_1735458016" MODIFIED="1697741661950" TEXT="Darstellung der Abhängigkeits-Struktur"/>
|
||||
<node CREATED="1697741689551" ID="ID_1012140830" MODIFIED="1697741694906" TEXT="Art der Datenübergabe"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697743909120" ID="ID_483537733" MODIFIED="1697743924734" TEXT="#1346 reproducible computational load">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740877587" ID="ID_1275890321" MODIFIED="1699747567145" TEXT="TestChainLoad_test">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699747322625" ID="ID_1190216980" MODIFIED="1699747559682" TEXT="verify_Node">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1699753108010" ID="ID_1374103098" MODIFIED="1699754432064" TEXT="Default-Konstruktion">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699753116721" ID="ID_1947111817" MODIFIED="1699753141716" TEXT="Verbindung mit anderen Nodes">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699753131711" ID="ID_1177424615" MODIFIED="1699753141717" TEXT="Hash-Berechnung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746799143" ID="ID_1824939661" MODIFIED="1699746805576" TEXT="Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746806718" ID="ID_1563586426" MODIFIED="1699747572592" TEXT="Grundstrukturen anlegen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746880572" ID="ID_1016750692" MODIFIED="1699746885284" TEXT="Rahmen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746814207" ID="ID_1830964354" MODIFIED="1699746816453" TEXT="Node">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746817756" ID="ID_490992503" MODIFIED="1699746834411" TEXT="Generator">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746891934" ID="ID_1003055056" MODIFIED="1699747555554" TEXT="Node">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699746898954" ID="ID_1174327209" MODIFIED="1699747552946" TEXT="Datenstruktur">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#435e98" CREATED="1699746902068" ID="ID_1045369485" MODIFIED="1699754419615" TEXT="maxFan ist ein Template-Param">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1699746922151" ID="ID_292908322" MODIFIED="1699746934836" TEXT="verwende ein std::Array"/>
|
||||
<node CREATED="1699747392222" ID="ID_85247310" MODIFIED="1699747397174" TEXT="pred / succ">
|
||||
<node CREATED="1699747398919" ID="ID_458723840" MODIFIED="1699747405529" TEXT="Anzahl"/>
|
||||
<node CREATED="1699747406121" ID="ID_1825332114" MODIFIED="1699747411156" TEXT="Iteration"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699747423371" ID="ID_1818811688" MODIFIED="1699747550979" TEXT="Berechnung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1699747433986" ID="ID_1557543092" MODIFIED="1699747548608" TEXT="setzt Berechnung aller Prefecessors vorraus">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699747511840" ID="ID_96811527" MODIFIED="1699747533636" TEXT="speichert das Ergebnis per Seiteneffekt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699747521150" ID="ID_356376425" MODIFIED="1699747533637" TEXT="kann durch Repetitionen aufwendig gemacht werden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue