#BlueJ class context comment0.target=Graph comment0.text=\r\n\ Dies\ ist\ das\ Herz\ vom\ "GraphTester"\ -\ der\ Graph\ selber,\ gepeichert\ als\ Adjazenzliste.\r\n\ Die\ Klasse\ erlaubt\ durch\ geeignete\ Methoden\:\r\n\ -\ die\ Speicherung\ als\ Adjazenzmatrix,\r\n\ -\ das\ Hinzufuegen\ und\ Loeschen\ von\ knoten\ und\ Kanten,\r\n\ -\ das\ Markieren\ von\ Knoten\ und\ Kanten,\r\n\ -\ eine\ Aussage\ darueber,\ ob\ Knoten\ oder\ Kanten\ enthalten\ sind\ und\r\n\ -\ eine\ Ausgabe\ des\ Graphen\ in\ textueller\ Form\ sowie\ als\ csv-Datei.\r\n\ \r\n\ \r\n\ @author\ Dirk\ Zechnall,\ Thomas\ Schaller\r\n\ @version\ 31.01.2021\ (v6.5)\r\n comment1.params=isGerichtet\ isGewichtet comment1.target=Graph(boolean,\ boolean) comment1.text=\r\n\ Der\ Konstruktor\ erstellt\ einen\ neuen\ Graphen\ (genauer\ eine\ neue\ Adjazenzliste)\r\n\ @param\ isGerichtet\ gibt\ an,\ ob\ es\ sich\ um\ einen\ gerichteten\ Graphen\ handelt\r\n\ @param\ isGewichtet\ gibt\ an,\ ob\ die\ Kanten\ gewichtet\ sind.\r\n comment10.params=k comment10.target=int\ getNummer(Kante) comment10.text=\ Gibt\ die\ Nummer\ einer\ Kante\ zur\u00FCck\r\n\ @param\ \ k\ gesuchte\ Kante\r\n\ @return\ Nummer\ der\ Kante\ (mit\ 0\ beginnend)\r\n comment11.params= comment11.target=double[][]\ getAdjazenzMatrix() comment11.text=\r\n\ Die\ Methode\ getAdjazenzMatrix()\ gibt\ die\ Adjazenzmatrix\ zurueck.\r\n\ \r\n\ @return\ \ double[][]\ Die\ AdjazenzMatrix\ als\ zweidimensionales\ Array\r\n comment12.params=filter comment12.target=java.util.List\ getAlleKanten(java.util.function.Predicate[]) comment12.text=\r\n\ Gibt\ eine\ Liste\ aller\ Kanten\ des\ Graphen\ zur\u00FCck.\r\n\ @param\ \ \ filter\ \ \ \ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ Liste\ aller\ Kanten\r\n comment13.params= comment13.target=void\ entferneMarkierungBeiAllenKnoten() comment13.text=\r\n\ Entfernt\ die\ Markierung\ bei\ allen\ Knoten\ des\ Graphen.\r\n comment14.params= comment14.target=void\ initialisiereAlleKnoten() comment14.text=\r\n\ Initialisiert\ alle\ Knoten\ des\ Graphen.\r\n comment15.params= comment15.target=void\ initialisiereAlleKanten() comment15.text=\r\n\ Initialisiert\ alle\ Kanten\ des\ Graphen.\r\n comment16.params=k comment16.target=boolean\ isKnotenEnthalten(Knoten) comment16.text=\r\n\ Ueberprueft,\ ob\ ein\ Knoten\ in\ der\ Knotenliste\ enthalten\ ist.\r\n\ Sobald\ in\ der\ Knotenliste\ der\ Knoten\ k\ gefunden\ wird,\ wird\ true\ ausgegeben.\r\n\ \r\n\ @param\ \ k\ \ Der\ gesuchte\ Knoten\r\n\ @return\ \ true\=\ ist\ enthalten,\ false\ \=\ ist\ nicht\ enthalten\r\n comment17.params= comment17.target=int\ getAnzahlKnoten() comment17.text=\r\n\ Gibt\ die\ Anzahl\ der\ Knoten\ im\ Graph\ zurueck\r\n\ \r\n\ @return\ \ Anzahl\ der\ Knoten\r\n comment18.params=filter comment18.target=java.util.List\ getAlleKnoten(java.util.function.Predicate[]) comment18.text=\r\n\ Gibt\ eine\ Liste\ aller\ Knoten\ des\ Graphen\ zurueck.\ \r\n\ @param\ \ \ filter\ \ \ \ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Die\ Knotenliste.\ Falls\ leer\ wird\ eine\ leere\ Liste\ \ zurueckgegeben\r\n comment19.params=k\ filter comment19.target=java.util.List\ getNachbarknoten(Knoten,\ java.util.function.Predicate[]) comment19.text=\r\n\ Gibt\ die\ Liste\ aller\ Nachbarknoten\ eines\ Knotens\ k\ zurueck,\ falls\ k\ in\ der\ Knotenliste\ vorhanden\ ist.\ \r\n\r\n\ @param\ \ \ k\ \ \ \ Der\ Knoten,\ zu\ dem\ die\ Adjazenzliste\ gesucht\ wird\r\n\ @param\ \ \ filter\ \ \ \ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Liste\ der\ Nachbarknoten\r\n comment2.params= comment2.target=Graph() comment2.text=\r\n\ Der\ Konstruktor\ erstellt\ einen\ neuen\ ungerichteten,\ ungewichteten\ Graphen\ (genauer\ eine\ neue\ Adjazenzliste)\r\n comment20.params=k\ filter comment20.target=java.util.List\ getAusgehendeKanten(Knoten,\ java.util.function.Predicate[]) comment20.text=\r\n\ Gibt\ eine\ Liste\ der\ ausgehenden\ Kanten\ eines\ Knotens\ k\ zurueck,\ falls\ k\ in\ der\ Knotenliste\ vorhanden\ ist.\ \r\n\ Bei\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ eingehenden\ und\ ausgehenden\ Kanten\ \r\n\ unterschieden.\r\n\r\n\ @param\ \ \ k\ \ \ \ Der\ Knoten,\ zu\ dem\ die\ Kanten\ gesucht\ werden\r\n\ @param\ \ \ filter\ \ \ \ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Liste\ der\ ausgehenden\ Kanten.\r\n comment21.params=knotennr\ filter comment21.target=java.util.List\ getAusgehendeKanten(int,\ java.util.function.Predicate[]) comment21.text=\r\n\ Gibt\ eine\ Liste\ der\ ausgehenden\ Kanten\ eines\ Knotens\ k\ zurueck,\ falls\ k\ in\ der\ Knotenliste\ vorhanden\ ist.\ \r\n\ Bei\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ eingehenden\ und\ ausgehenden\ Kanten\ \r\n\ unterschieden.\r\n\r\n\ @param\ \ \ knotennr\ \ \ \ Nummer\ des\ Knoten,\ zu\ dem\ die\ Kanten\ gesucht\ werden\r\n\ @param\ \ \ filter\ \ \ \ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Liste\ der\ ausgehenden\ Kanten.\r\n comment22.params=knotennr\ filter comment22.target=java.util.List\ getEingehendeKanten(int,\ java.util.function.Predicate[]) comment22.text=\r\n\ Gibt\ eine\ Liste\ der\ eingehenden\ Kanten\ eines\ Knotens\ k\ zurueck,\ falls\ k\ in\ der\ Knotenliste\ vorhanden\ ist.\ \r\n\ Bei\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ eingehenden\ und\ ausgehenden\ Kanten\ \r\n\ unterschieden.\r\n\r\n\ @param\ \ \ knotennr\ \ \ \ Die\ Nummer\ des\ Knotens,\ zu\ dem\ die\ Kanten\ gesucht\ werden\r\n\ @param\ \ \ filter\ \ \ \ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Liste\ der\ eingehenden\ Kanten.\r\n comment23.params=k\ filter comment23.target=java.util.List\ getEingehendeKanten(Knoten,\ java.util.function.Predicate[]) comment23.text=\r\n\ Gibt\ eine\ Liste\ der\ eingehenden\ Kanten\ eines\ Knotens\ k\ zurueck,\ falls\ k\ in\ der\ Knotenliste\ vorhanden\ ist.\ \r\n\ Bei\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ eingehenden\ und\ ausgehenden\ Kanten\ \r\n\ unterschieden.\r\n\r\n\ @param\ \ \ k\ \ \ \ \ \ \ \ Knoten,\ zu\ dem\ die\ Kanten\ gesucht\ werden\r\n\ @param\ \ \ filter\ \ \ optionaler\ Filter,\ der\ auf\ die\ Liste\ angewendet\ wird.\ Er\ muss\ einen\ boolean-Wert\ zur\u00FCckgeben\:\ z.B.\ @literal{k->k.isMarkiert()\ &&\ k.isBesucht()}\r\n\ @return\ \ Liste\ der\ eingehenden\ Kanten.\r\n comment24.params=knotennr comment24.target=Knoten\ getKnoten(int) comment24.text=\r\n\ Liefert\ einen\ Knoten\ des\ Graphen\r\n\ @param\ knotennr\ Nummer\ der\ Knoten\ (beginnend\ mit\ 0)\r\n\ @return\ liefert\ den\ Knoten\ mit\ dieser\ Nummer\r\n comment25.params=k comment25.target=void\ neuerKnoten(Knoten) comment25.text=\r\n\ F\u00FCgt\ einen\ Knoten\ dem\ Graph\ hinzu.\r\n\ @param\ \ k\ \ \ \ Der\ Knoten,\ der\ hinzugefuegt\ werden\ soll\r\n comment26.params=knotennr comment26.target=void\ entferneKnoten(int) comment26.text=\r\n\ Entfernt\ einen\ Knoten\ aus\ dem\ Graphen\r\n\r\n\ @param\ \ \ knotennr\ \ \ \ Nummer\ des\ Knotens,\ der\ geloescht\ werden\ soll\r\n comment27.params=k comment27.target=boolean\ entferneKnoten(Knoten) comment27.text=\r\n\ Entfernt\ einen\ Knoten\ aus\ dem\ Graphen\r\n\r\n\ @param\ \ \ k\ \ \ \ Knoten,\ der\ geloescht\ werden\ soll\r\n\ @return\ \ gibt\ zur\u00FCck,\ ob\ der\ Knoten\ erfolgreich\ entfernt\ wurde.\r\n comment28.params=e comment28.target=boolean\ isKanteEnthalten(Kante) comment28.text=\r\n\ Ueberprueft,\ ob\ eine\ Kante\ im\ Graphen\ enthalten\ ist.\r\n\r\n\ @param\ \ \ e\ \ \ \ \ Die\ zu\ suchende\ Kante\r\n\ @return\ \ Kante\ enthalten\ (true)\ oder\ nicht\ (false)\r\n comment29.params=startNr\ zielNr comment29.target=boolean\ isKanteEnthalten(int,\ int) comment29.text=\r\n\ Ueberprueft,\ ob\ eine\ Kante\ im\ Graphen\ enthalten\ ist.\ \r\n\ In\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ Start-\ und\ Zielknoten\ unterschieden\r\n\r\n\ @param\ \ \ startNr\ \ \ \ Nummer\ des\ Startknotens\r\n\ @param\ \ \ zielNr\ \ \ \ \ Nummer\ des\ Zielknotens\r\n\ @return\ \ boolean\ \ \ \ \ Kante\ enthalten\ (true)\ oder\ nicht\ (false)\r\n comment3.params= comment3.target=void\ loescheGraph() comment3.text=\r\n\ L\u00F6scht\ alle\ Knoten\ und\ Kanten\ eines\ Graphen\ und\ stellt\ auf\ ungerichtet\ und\ ungewichtet\ zur\u00FCck.\r\n comment30.params=start\ ziel comment30.target=boolean\ isKanteEnthalten(Knoten,\ Knoten) comment30.text=\r\n\ Ueberprueft,\ ob\ eine\ Kante\ im\ Graphen\ enthalten\ ist.\ \r\n\ In\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ Start-\ und\ Zielknoten\ unterschieden\r\n\r\n\ @param\ \ \ start\ \ \ \ Startknoten\r\n\ @param\ \ \ ziel\ \ \ \ \ Zielknoten\r\n\ @return\ \ boolean\ \ \ \ \ Kante\ enthalten\ (true)\ oder\ nicht\ (false)\r\n comment31.params=start\ ziel comment31.target=Kante\ getKante(Knoten,\ Knoten) comment31.text=\r\n\ Gibt\ eine\ gesuchte\ Kante\ aus\ dem\ Graphen\ zurueck.\r\n\ In\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ Start-\ und\ Zielknoten\ unterschieden\r\n\r\n\ @param\ \ \ start\ \ \ \ Der\ StartKnoten\r\n\ @param\ \ \ ziel\ \ \ \ \ Der\ StartKnoten\r\n\ @return\ \ \ \ Die\ gesuchte\ Kante\r\n comment32.params=startnr\ zielnr comment32.target=Kante\ getKante(int,\ int) comment32.text=\r\n\ Gibt\ eine\ gesuchte\ Kante\ aus\ dem\ Graphen\ zurueck.\r\n\ In\ ungerichteten\ Graphen\ wird\ nicht\ zwischen\ Start-\ und\ Zielknoten\ unterschieden\r\n\r\n\ @param\ \ \ startnr\ \ \ \ Der\ Nummer\ des\ StartKnoten\r\n\ @param\ \ \ zielnr\ \ \ \ \ Die\ Nummer\ des\ Zielknoten\r\n\ @return\ \ Die\ gesuchte\ Kante\r\n comment33.params=e comment33.target=void\ neueKante(Kante) comment33.text=\r\n\ Fuegt\ eine\ Kante\ dem\ Graphen\ hinzu.\r\n\ Dabei\ wird\ ueberprueft,\ ob\ die\ Kante\ schon\ im\ Graphen\ enthalten\ ist.\r\n\ \r\n\ Ist\ der\ Graph\ ungerichtet,\ werden\ sowohl\ "Hin-"\ und\ "RueckKante"\ erstellt.\r\n\r\n\ @param\ \ \ e\ \ \ \ \ Die\ Kante,\ die\ hinzugefuegt\ werden\ soll\r\n comment34.params=start\ ziel\ gewicht comment34.target=void\ neueKante(Knoten,\ Knoten,\ double) comment34.text=\r\n\ Fuegt\ eine\ Kante\ dem\ Graphen\ hinzu.\r\n\ Dabei\ wird\ ueberprueft,\ ob\ die\ Kante\ schon\ im\ Graphen\ enthalten\ ist.\r\n\ \r\n\ Ist\ der\ Graph\ ungerichtet,\ werden\ sowohl\ "Hin-"\ und\ "RueckKante"\ erstellt.\r\n\r\n\ @param\ \ \ start\ \ \ \ \ Der\ StartKnoten\ der\ Kante,\ die\ hinzugefuegt\ werden\ soll\r\n\ @param\ \ \ ziel\ \ \ \ \ Der\ ZielKnoten\ der\ Kante,\ die\ hinzugefuegt\ werden\ soll\r\n\ @param\ \ \ gewicht\ \ \ \ \ Das\ Gewicht\ der\ Kante,\ die\ hinzugefuegt\ werden\ soll\r\n comment35.params=e comment35.target=void\ entferneKante(Kante) comment35.text=\r\n\ Entfernt\ eine\ Kante\ aus\ dem\ Graphen.\r\n\ Ist\ der\ Graph\ ungerichtet,\ werden\ sowohl\ "Hin-"\ und\ "RueckKante"\ entfernt.\r\n\r\n\ @param\ \ \ e\ Die\ zu\ entfernende\ Kante\r\n comment36.params=start\ ziel comment36.target=void\ entferneKante(Knoten,\ Knoten) comment36.text=\r\n\ Entfernt\ eine\ Kante\ aus\ dem\ Graphen.\r\n\ Dabei\ wird\ ueberprueft,\ ob\ die\ Kante\ ueberhaupt\ im\ Graphen\ enthalten\ ist.\r\n\ \r\n\ Ist\ der\ Graph\ ungerichtet,\ werden\ sowohl\ "Hin-"\ und\ "RueckKante"\ entfernt.\r\n\r\n\ @param\ \ \ start\ \ \ \ StartKnotens\r\n\ @param\ \ \ ziel\ \ \ \ \ ZielKnotens\r\n comment37.params=startnr\ zielnr comment37.target=void\ entferneKante(int,\ int) comment37.text=\r\n\ Entfernt\ eine\ Kante\ aus\ dem\ Graphen.\r\n\ Ist\ der\ Graph\ ungerichtet,\ werden\ sowohl\ "Hin-"\ und\ "RueckKante"\ entfernt.\r\n\r\n\ @param\ \ \ startnr\ \ \ \ Nummer\ des\ StartKnotens\r\n\ @param\ \ \ zielnr\ \ \ \ \ Nummer\ des\ ZielKnotens\r\n comment38.params= comment38.target=boolean\ isLeer() comment38.text=\r\n\ Ueberprueft,\ ob\ die\ Adjazenzliste\ leer\ ist,\ d.h.\ keine\ Knoten\ im\ Graphen\ enthalten\ sind.\r\n\ \r\n\ @return\ \ \ true,\ wenn\ die\ Liste\ leer\ ist,\ sonst\ false\r\n comment39.params= comment39.target=void\ loescheAlles() comment39.text=\r\n\ Loescht\ den\ gesamten\ Graphen\r\n comment4.params=csvParser comment4.target=boolean\ ladeGraph(imp.Table) comment4.text=\r\n\ Ein\ Graph\ wird\ aus\ einer\ csv-Datei\ erstellt,\ die\ entweder\r\n\ eine\ Matrix\ oder\ eine\ Adjazenzliste\ enth\u00E4lt,\ die\ den\ Graph\ beschreibt.\r\n\r\n\ @param\ \ csvParser\ \ \ Eine\ CSV-Datei\ als\ Table-Objekt\r\n\ @return\ gibt\ zur\u00FCck,\ ob\ das\ Laden\ erfolgreich\ war\r\n comment40.params=asMatrix comment40.target=java.lang.String\ toCSVString(boolean) comment40.text=\r\n\ Die\ Methode\ erstellt\ eine\ CSV-Ausgabe\ des\ Graphen\ entweder\ als\ Adjazenzliste\ oder\ als\ Adjazenzmatrix.\r\n\r\n\ @param\ \ \ asMatrix\ \ \ \ true,\ falls\ die\ CSV-Ausgabe\ eine\ AdjazenzMatrix\ sein\ soll,\ sonst\ false\r\n\ @return\ \ CSV-Ausgabe\r\n comment41.params= comment41.target=java.lang.String\ toString() comment41.text=\r\n\ Textuelle\ Repraesentation\ des\ Graphen.\r\n\ \r\n\ @return\ \ Der\ Graph\ als\ Stringrepraesentation\r\n comment42.params= comment42.target=void\ ausgabe() comment42.text=\r\n\ Konsolenausgabe\ der\ textuellen\ Repraesentation\ des\ Graphen.\r\n comment43.params=k\ zeigeWert comment43.target=java.lang.String\ getKnoteninfo(Knoten,\ boolean) comment43.text=\r\n\ Info\ \u00FCber\ einen\ Knoten\ zur\u00FCckgeben\ \r\n\ @param\ k\ Knoten,\ des\ Info\ ermittelt\ werden\ soll\r\n\ @param\ zeigeWert\ Soll\ der\ Wert\ des\ Knoten\ in\ der\ Info\ enthalten\ sein\r\n\ @return\ Infotext\ oder\ Nummer\ des\ Knoten\ und\ ggf.\ sein\ Wert\r\n comment44.params= comment44.target=java.util.List\ getStatus() comment44.text=\ Speichert\ den\ Zustand\ des\ Graphen\ als\ String-List\r\n\ @return\ List\ mit\ Zustand\r\n comment45.params=status comment45.target=void\ setStatus(java.util.List) comment45.text=\ Stellt\ den\ Zustand\ des\ Graphen\ aus\ String-List\ wieder\ her\r\n\ @param\ status\ List\ mit\ Zustand\r\n comment5.params=isGewichtet comment5.target=void\ setGewichtet(boolean) comment5.text=\r\n\ Legt\ fest,\ ob\ der\ Graph\ gewichtet\ oder\ ungewichtet\ ist.\r\n\r\n\ @param\ isGewichtet\ neuer\ Wert\r\n comment6.params= comment6.target=boolean\ isGewichtet() comment6.text=\r\n\ Gibt\ zurueck,\ ob\ der\ Graph\ gewichtet\ oder\ ungewichtet\ ist\r\n\r\n\ @return\ gewichtet?\ (true/false)\r\n comment7.params=isGerichtet comment7.target=void\ setGerichtet(boolean) comment7.text=\r\n\ Legt\ fest,\ ob\ der\ Graph\ gerichtet\ oder\ ungerichtet\ ist.\r\n\r\n\ @param\ \ isGerichtet\ neuer\ Wert\r\n comment8.params= comment8.target=boolean\ isGerichtet() comment8.text=\r\n\ Gibt\ zurueck,\ ob\ der\ Graph\ gerichtet\ oder\ ungerichtet\ ist.\r\n\r\n\ @return\ \ gerichtet?\ (true/false)\r\n comment9.params=k comment9.target=int\ getNummer(Knoten) comment9.text=\ Gibt\ die\ Nummer\ eines\ Knotens\ im\ Graphen\ zur\u00FCck\r\n\ @param\ \ k\ \ gesuchter\ Knoten\r\n\ @return\ Nummer\ des\ Knotens\ (mit\ 0\ beginnend)\r\n numComments=46