{"id":23243,"date":"2026-06-05T09:04:32","date_gmt":"2026-06-05T07:04:32","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=23243"},"modified":"2026-06-05T09:06:26","modified_gmt":"2026-06-05T07:06:26","slug":"gerichteter-azyklischer-graph-dag-am-beispiel-von-mammutbaeumen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=23243","title":{"rendered":"Gerichteter azyklischer Graph (DAG) am Beispiel von Mammutb\u00e4umen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/06\/taxo-mamutbaum.jpg\" alt=\"azyklischer Graph\" width=\"902\" height=\"1002\"  \/><\/p>\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Gerichteter_Graph\" target=\"_blank\">DAG<\/a> ist eine Struktur aus Knoten und Verbindungen, bei der jede Verbindung eine feste Richtung hat und keine geschlossenen Schleifen vorkommen.<br \/>\nIn diesem Beispiel wird dieser Graph als Baum dargestellt, weil es genau einen Ausgangspunkt gibt und sich die Struktur strikt nach unten in immer feinere Einheiten verzweigt.<\/p>\n<p>Wie l\u00e4\u00dft sich das in Java darstellen?<\/p>\n<p>Hier die MammutbaumTaxonomie.java:<!--more--><\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.taxonomie;\r\n\r\n\/**\r\n * MammutbaumTaxonomie\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\npublic class MammutbaumTaxonomie {\r\n\r\n    public static void main(String[] args) {\r\n\r\n\t\/\/ ===== Wurzel =====\r\n\tTaxon pflanzenreich = new Taxon(\"Pflanzen (Plantae)\", TaxonRank.REICH);\r\n\r\n\tTaxon gefaesspflanzen = new Taxon(\"Gef\u00e4\u00dfpflanzen (Tracheophyta)\", TaxonRank.ABTEILUNG);\r\n\tTaxon nadelbaeume = new Taxon(\"Nadelb\u00e4ume (Pinopsida)\", TaxonRank.KLASSE);\r\n\tTaxon ordnung = new Taxon(\"Kiefernartige (Pinales)\", TaxonRank.ORDNUNG);\r\n\tTaxon familie = new Taxon(\"Zypressengew\u00e4chse (Cupressaceae)\", TaxonRank.FAMILIE);\r\n\tTaxon unterfamilie = new Taxon(\"Sequoioideae (Mammutbaum-Unterfamilie)\", TaxonRank.UNTERFAMILIE);\r\n\r\n\tpflanzenreich.addKind(gefaesspflanzen);\r\n\tgefaesspflanzen.addKind(nadelbaeume);\r\n\tnadelbaeume.addKind(ordnung);\r\n\tordnung.addKind(familie);\r\n\tfamilie.addKind(unterfamilie);\r\n\r\n\t\/\/ ===== Gattung 1 =====\r\n\tTaxon gattungSequoia = new Taxon(\"K\u00fcstenmammutbaum-Gattung (Sequoia)\", TaxonRank.GATTUNG);\r\n\tTaxon kuestenmammutbaum = new Taxon(\"K\u00fcstenmammutbaum (Sequoia sempervirens)\", TaxonRank.ART);\r\n\r\n\tgattungSequoia.addKind(kuestenmammutbaum);\r\n\r\n\t\/\/ ===== Gattung 2 =====\r\n\tTaxon gattungSequoiadendron = new Taxon(\"Riesenmammutbaum-Gattung (Sequoiadendron)\", TaxonRank.GATTUNG);\r\n\tTaxon riesenmammutbaum = new Taxon(\"Riesenmammutbaum (Sequoiadendron giganteum)\", TaxonRank.ART);\r\n\r\n\tgattungSequoiadendron.addKind(riesenmammutbaum);\r\n\r\n\t\/\/ ===== Gattung 3 =====\r\n\tTaxon gattungMetasequoia = new Taxon(\"Urweltmammutbaum-Gattung (Metasequoia)\", TaxonRank.GATTUNG);\r\n\tTaxon urweltmammutbaum = new Taxon(\"Urweltmammutbaum (Metasequoia glyptostroboides)\", TaxonRank.ART);\r\n\r\n\tgattungMetasequoia.addKind(urweltmammutbaum);\r\n\r\n\t\/\/ ===== Einh\u00e4ngen in Unterfamilie =====\r\n\tunterfamilie.addKind(gattungSequoia);\r\n\tunterfamilie.addKind(gattungSequoiadendron);\r\n\tunterfamilie.addKind(gattungMetasequoia);\r\n\r\n\t\/\/ ===== Ausgabe =====\r\n\tprint(pflanzenreich, 0);\r\n    }\r\n\r\n    private static void print(Taxon taxon, int level) {\r\n\tSystem.out.println(\"  \".repeat(level) + taxon);\r\n\tfor (Taxon kind : taxon.getKinder()) {\r\n\t    print(kind, level + 1);\r\n\t}\r\n    }\r\n}<\/pre>\n<p>Und die dazu geh\u00f6rige TaxonRank und Taxon Klasse:<\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.taxonomie;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nenum TaxonRank {\r\n\r\n    REICH, \/\/ Kingdom\r\n    ABTEILUNG, \/\/ Division (bei Pflanzen \u00fcblich statt Stamm)\r\n    KLASSE, \/\/ Class\r\n    ORDNUNG, \/\/ Order\r\n    FAMILIE, \/\/ Family\r\n    UNTERFAMILIE, \/\/ Subfamily\r\n    TRIBUS, \/\/ Tribe (optional, feinere Untergliederung)\r\n    GATTUNG, \/\/ Genus\r\n    ART \/\/ Species\r\n}\r\n\r\n\/**\r\n * MammutbaumTaxonomie\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\nclass Taxon {\r\n\r\n    private final String name;\r\n    private final TaxonRank rank;\r\n    private final List&lt;Taxon&gt; kinder = new ArrayList&lt;&gt;();\r\n\r\n    public Taxon(String name, TaxonRank rank) {\r\n\tthis.name = name;\r\n\tthis.rank = rank;\r\n    }\r\n\r\n    public void addKind(Taxon taxon) {\r\n\tkinder.add(taxon);\r\n    }\r\n\r\n    public String getName() {\r\n\treturn name;\r\n    }\r\n\r\n    public TaxonRank getRank() {\r\n\treturn rank;\r\n    }\r\n\r\n    public List&lt;Taxon&gt; getKinder() {\r\n\treturn kinder;\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n\treturn rank + \": \" + name;\r\n    }\r\n}<\/pre>\n<p>Liefert dann dieses Ergebnis:<\/p>\n<pre class=\"minimize:true lang:default decode:true \" >REICH: Pflanzen (Plantae)\r\n  ABTEILUNG: Gef\u00e4\u00dfpflanzen (Tracheophyta)\r\n    KLASSE: Nadelb\u00e4ume (Pinopsida)\r\n      ORDNUNG: Kiefernartige (Pinales)\r\n        FAMILIE: Zypressengew\u00e4chse (Cupressaceae)\r\n          UNTERFAMILIE: Sequoioideae (Mammutbaum-Unterfamilie)\r\n            GATTUNG: K\u00fcstenmammutbaum-Gattung (Sequoia)\r\n              ART: K\u00fcstenmammutbaum (Sequoia sempervirens)\r\n            GATTUNG: Riesenmammutbaum-Gattung (Sequoiadendron)\r\n              ART: Riesenmammutbaum (Sequoiadendron giganteum)\r\n            GATTUNG: Urweltmammutbaum-Gattung (Metasequoia)\r\n              ART: Urweltmammutbaum (Metasequoia glyptostroboides)<\/pre>\n<p>Bilder von Mammutb\u00e4umen in Hannover und Langenhagen habe ich <a href=\"http:\/\/kleinhirn.eu\/2026\/06\/04\/mammutbaum-in-langenhagen-hannover\/#more-9077\" target=\"_blank\">hier<\/a> abgelegt. Das ganze Projekt auf <a href=\"https:\/\/gitlab.com\/IT-Berater\/twmathe\/-\/tree\/main\/src\/main\/java\/de\/wenzlaff\/taxonomie?ref_type=heads\">Gitlab<\/a>.<\/p>\n<p>Download <a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/06\/taxo-mamutbaum.pdf\">taxo-mamutbaum.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DAG ist eine Struktur aus Knoten und Verbindungen, bei der jede Verbindung eine feste Richtung hat und keine geschlossenen Schleifen vorkommen. In diesem Beispiel wird dieser Graph als Baum dargestellt, weil es genau einen Ausgangspunkt gibt und sich die Struktur strikt nach unten in immer feinere Einheiten verzweigt. Wie l\u00e4\u00dft sich das in Java darstellen? &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=23243\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eGerichteter azyklischer Graph (DAG) am Beispiel von Mammutb\u00e4umen\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[220,5,79],"tags":[6135,3132,2178,6322],"class_list":["post-23243","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-programmierung","tag-dag","tag-graphen","tag-java","tag-mammutbaeume"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23243"}],"version-history":[{"count":4,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23243\/revisions"}],"predecessor-version":[{"id":23247,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23243\/revisions\/23247"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23243"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}