added BinaryTree
This commit is contained in:
commit
12825d2a6c
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,34 @@
|
|||
#BlueJ class context
|
||||
comment0.target=BinaryTree
|
||||
comment0.text=\r\n\ <p>\r\n\ Materialien\ zu\ den\ zentralen\ NRW-Abiturpruefungen\ im\ Fach\ Informatik\ ab\ 2018\r\n\ </p>\r\n\ <p>\r\n\ Generische\ Klasse\ BinaryTree<ContentType>\r\n\ </p>\r\n\ <p>\r\n\ Mithilfe\ der\ generischen\ Klasse\ BinaryTree\ koennen\ beliebig\ viele\r\n\ Inhaltsobjekte\ vom\ Typ\ ContentType\ in\ einem\ Binaerbaum\ verwaltet\ werden.\ Ein\r\n\ Objekt\ der\ Klasse\ stellt\ entweder\ einen\ leeren\ Baum\ dar\ oder\ verwaltet\ ein\r\n\ Inhaltsobjekt\ sowie\ einen\ linken\ und\ einen\ rechten\ Teilbaum,\ die\ ebenfalls\r\n\ Objekte\ der\ generischen\ Klasse\ BinaryTree\ sind.\r\n\ </p>\r\n\ \r\n\ @author\ Qualitaets-\ und\ UnterstuetzungsAgentur\ -\ Landesinstitut\ fuer\ Schule\r\n\ @version\ Generisch_03\ 2014-03-01\r\n
|
||||
comment1.params=
|
||||
comment1.target=BinaryTree()
|
||||
comment1.text=\r\n\ Nach\ dem\ Aufruf\ des\ Konstruktors\ existiert\ ein\ leerer\ Binaerbaum.\r\n
|
||||
comment10.params=
|
||||
comment10.target=BinaryTree\ getRightTree()
|
||||
comment10.text=\r\n\ Diese\ Anfrage\ liefert\ den\ rechten\ Teilbaum\ des\ Binaerbaumes.\ Wenn\ der\r\n\ Binaerbaum\ (this)\ leer\ ist,\ wird\ null\ zurueckgegeben.\r\n\ \r\n\ @return\ rechter\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\ oder\ null,\ wenn\r\n\ der\ aktuelle\ Binaerbaum\ (this)\ leer\ ist\r\n
|
||||
comment2.params=pContent
|
||||
comment2.target=BinaryTree(java.lang.Object)
|
||||
comment2.text=\r\n\ Wenn\ der\ Parameter\ pContent\ ungleich\ null\ ist,\ existiert\ nach\ dem\ Aufruf\r\n\ des\ Konstruktors\ der\ Binaerbaum\ und\ hat\ pContent\ als\ Inhaltsobjekt\ und\r\n\ zwei\ leere\ Teilbaeume.\ Falls\ der\ Parameter\ null\ ist,\ wird\ ein\ leerer\r\n\ Binaerbaum\ erzeugt.\r\n\ \r\n\ @param\ pContent\r\n\ \ \ \ \ \ \ \ \ \ \ \ das\ Inhaltsobjekt\ des\ Wurzelknotens\ vom\ Typ\ ContentType\r\n
|
||||
comment3.params=pContent\ pLeftTree\ pRightTree
|
||||
comment3.target=BinaryTree(java.lang.Object,\ BinaryTree,\ BinaryTree)
|
||||
comment3.text=\r\n\ Wenn\ der\ Parameter\ pContent\ ungleich\ null\ ist,\ wird\ ein\ Binaerbaum\ mit\r\n\ pContent\ als\ Inhalt\ und\ den\ beiden\ Teilbaeume\ pLeftTree\ und\ pRightTree\r\n\ erzeugt.\ Sind\ pLeftTree\ oder\ pRightTree\ gleich\ null,\ wird\ der\r\n\ entsprechende\ Teilbaum\ als\ leerer\ Binaerbaum\ eingefuegt.\ So\ kann\ es\ also\r\n\ nie\ passieren,\ dass\ linke\ oder\ rechte\ Teilbaeume\ null\ sind.\ Wenn\ der\r\n\ Parameter\ pContent\ gleich\ null\ ist,\ wird\ ein\ leerer\ Binaerbaum\ erzeugt.\r\n\ \r\n\ @param\ pContent\r\n\ \ \ \ \ \ \ \ \ \ \ \ das\ Inhaltsobjekt\ des\ Wurzelknotens\ vom\ Typ\ ContentType\r\n\ @param\ pLeftTree\r\n\ \ \ \ \ \ \ \ \ \ \ \ der\ linke\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\r\n\ @param\ pRightTree\r\n\ \ \ \ \ \ \ \ \ \ \ \ der\ rechte\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\r\n
|
||||
comment4.params=
|
||||
comment4.target=boolean\ isEmpty()
|
||||
comment4.text=\r\n\ Diese\ Anfrage\ liefert\ den\ Wahrheitswert\ true,\ wenn\ der\ Binaerbaum\ leer\r\n\ ist,\ sonst\ liefert\ sie\ den\ Wert\ false.\r\n\ \r\n\ @return\ true,\ wenn\ der\ Binaerbaum\ leer\ ist,\ sonst\ false\r\n
|
||||
comment5.params=pContent
|
||||
comment5.target=void\ setContent(java.lang.Object)
|
||||
comment5.text=\r\n\ Wenn\ pContent\ null\ ist,\ geschieht\ nichts.\ <br\ />\r\n\ Ansonsten\:\ Wenn\ der\ Binaerbaum\ leer\ ist,\ wird\ der\ Parameter\ pContent\ als\r\n\ Inhaltsobjekt\ sowie\ ein\ leerer\ linker\ und\ rechter\ Teilbaum\ eingefuegt.\r\n\ Ist\ der\ Binaerbaum\ nicht\ leer,\ wird\ das\ Inhaltsobjekt\ durch\ pContent\r\n\ ersetzt.\ Die\ Teilbaeume\ werden\ nicht\ geaendert.\r\n\ \r\n\ @param\ pContent\r\n\ \ \ \ \ \ \ \ \ \ \ \ neues\ Inhaltsobjekt\ vom\ Typ\ ContentType\r\n
|
||||
comment6.params=
|
||||
comment6.target=java.lang.Object\ getContent()
|
||||
comment6.text=\r\n\ Diese\ Anfrage\ liefert\ das\ Inhaltsobjekt\ des\ Binaerbaums.\ Wenn\ der\r\n\ Binaerbaum\ leer\ ist,\ wird\ null\ zurueckgegeben.\r\n\ \r\n\ @return\ das\ Inhaltsobjekt\ der\ Wurzel\ vom\ Typ\ ContentType\ bzw.\ null,\ wenn\r\n\ \ \ \ \ \ \ \ \ der\ Binaerbaum\ leer\ ist\r\n
|
||||
comment7.params=pTree
|
||||
comment7.target=void\ setLeftTree(BinaryTree)
|
||||
comment7.text=\r\n\ Falls\ der\ Parameter\ null\ ist,\ geschieht\ nichts.\ Wenn\ der\ Binaerbaum\ leer\r\n\ ist,\ wird\ pTree\ nicht\ angehaengt.\ Andernfalls\ erhaelt\ der\ Binaerbaum\ den\r\n\ uebergebenen\ BinaryTree\ als\ linken\ Teilbaum.\r\n\ \r\n\ @param\ pTree\r\n\ \ \ \ \ \ \ \ \ \ \ \ neuer\ linker\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\r\n
|
||||
comment8.params=pTree
|
||||
comment8.target=void\ setRightTree(BinaryTree)
|
||||
comment8.text=\r\n\ Falls\ der\ Parameter\ null\ ist,\ geschieht\ nichts.\ Wenn\ der\ Binaerbaum\ leer\r\n\ ist,\ wird\ pTree\ nicht\ angehaengt.\ Andernfalls\ erhaelt\ der\ Binaerbaum\ den\r\n\ uebergebenen\ BinaryTree\ als\ rechten\ Teilbaum.\r\n\ \r\n\ @param\ pTree\r\n\ \ \ \ \ \ \ \ \ \ \ \ neuer\ linker\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\r\n
|
||||
comment9.params=
|
||||
comment9.target=BinaryTree\ getLeftTree()
|
||||
comment9.text=\r\n\ Diese\ Anfrage\ liefert\ den\ linken\ Teilbaum\ des\ Binaerbaumes.\ Wenn\ der\r\n\ Binaerbaum\ leer\ ist,\ wird\ null\ zurueckgegeben.\r\n\ \r\n\ @return\ linker\ Teilbaum\ vom\ Typ\ BinaryTree<ContentType>\ oder\ null,\ wenn\r\n\ der\ aktuelle\ Binaerbaum\ leer\ ist\r\n
|
||||
numComments=11
|
|
@ -0,0 +1,210 @@
|
|||
/**
|
||||
* <p>
|
||||
* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
|
||||
* </p>
|
||||
* <p>
|
||||
* Generische Klasse BinaryTree<ContentType>
|
||||
* </p>
|
||||
* <p>
|
||||
* Mithilfe der generischen Klasse BinaryTree koennen beliebig viele
|
||||
* Inhaltsobjekte vom Typ ContentType in einem Binaerbaum verwaltet werden. Ein
|
||||
* Objekt der Klasse stellt entweder einen leeren Baum dar oder verwaltet ein
|
||||
* Inhaltsobjekt sowie einen linken und einen rechten Teilbaum, die ebenfalls
|
||||
* Objekte der generischen Klasse BinaryTree sind.
|
||||
* </p>
|
||||
*
|
||||
* @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
|
||||
* @version Generisch_03 2014-03-01
|
||||
*/
|
||||
public class BinaryTree<ContentType> {
|
||||
|
||||
/* --------- Anfang der privaten inneren Klasse -------------- */
|
||||
|
||||
/**
|
||||
* Durch diese innere Klasse kann man dafuer sorgen, dass ein leerer Baum
|
||||
* null ist, ein nicht-leerer Baum jedoch immer eine nicht-null-Wurzel sowie
|
||||
* nicht-null-Teilbaeume, ggf. leere Teilbaeume hat.
|
||||
*/
|
||||
private class BTNode<CT> {
|
||||
|
||||
private CT content;
|
||||
private BinaryTree<CT> left, right;
|
||||
|
||||
public BTNode(CT pContent) {
|
||||
// Der Knoten hat einen linken und einen rechten Teilbaum, die
|
||||
// beide von null verschieden sind. Also hat ein Blatt immer zwei
|
||||
// leere Teilbaeume unter sich.
|
||||
this.content = pContent;
|
||||
left = new BinaryTree<CT>();
|
||||
right = new BinaryTree<CT>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* ----------- Ende der privaten inneren Klasse -------------- */
|
||||
|
||||
private BTNode<ContentType> node;
|
||||
|
||||
/**
|
||||
* Nach dem Aufruf des Konstruktors existiert ein leerer Binaerbaum.
|
||||
*/
|
||||
public BinaryTree() {
|
||||
this.node = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wenn der Parameter pContent ungleich null ist, existiert nach dem Aufruf
|
||||
* des Konstruktors der Binaerbaum und hat pContent als Inhaltsobjekt und
|
||||
* zwei leere Teilbaeume. Falls der Parameter null ist, wird ein leerer
|
||||
* Binaerbaum erzeugt.
|
||||
*
|
||||
* @param pContent
|
||||
* das Inhaltsobjekt des Wurzelknotens vom Typ ContentType
|
||||
*/
|
||||
public BinaryTree(ContentType pContent) {
|
||||
if (pContent != null) {
|
||||
this.node = new BTNode<ContentType>(pContent);
|
||||
} else {
|
||||
this.node = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wenn der Parameter pContent ungleich null ist, wird ein Binaerbaum mit
|
||||
* pContent als Inhalt und den beiden Teilbaeume pLeftTree und pRightTree
|
||||
* erzeugt. Sind pLeftTree oder pRightTree gleich null, wird der
|
||||
* entsprechende Teilbaum als leerer Binaerbaum eingefuegt. So kann es also
|
||||
* nie passieren, dass linke oder rechte Teilbaeume null sind. Wenn der
|
||||
* Parameter pContent gleich null ist, wird ein leerer Binaerbaum erzeugt.
|
||||
*
|
||||
* @param pContent
|
||||
* das Inhaltsobjekt des Wurzelknotens vom Typ ContentType
|
||||
* @param pLeftTree
|
||||
* der linke Teilbaum vom Typ BinaryTree<ContentType>
|
||||
* @param pRightTree
|
||||
* der rechte Teilbaum vom Typ BinaryTree<ContentType>
|
||||
*/
|
||||
public BinaryTree(ContentType pContent, BinaryTree<ContentType> pLeftTree, BinaryTree<ContentType> pRightTree) {
|
||||
if (pContent != null) {
|
||||
this.node = new BTNode<ContentType>(pContent);
|
||||
if (pLeftTree != null) {
|
||||
this.node.left = pLeftTree;
|
||||
} else {
|
||||
this.node.left = new BinaryTree<ContentType>();
|
||||
}
|
||||
if (pRightTree != null) {
|
||||
this.node.right = pRightTree;
|
||||
} else {
|
||||
this.node.right = new BinaryTree<ContentType>();
|
||||
}
|
||||
} else {
|
||||
// Da der Inhalt null ist, wird ein leerer BinarySearchTree erzeugt.
|
||||
this.node = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Anfrage liefert den Wahrheitswert true, wenn der Binaerbaum leer
|
||||
* ist, sonst liefert sie den Wert false.
|
||||
*
|
||||
* @return true, wenn der Binaerbaum leer ist, sonst false
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return this.node == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wenn pContent null ist, geschieht nichts. <br />
|
||||
* Ansonsten: Wenn der Binaerbaum leer ist, wird der Parameter pContent als
|
||||
* Inhaltsobjekt sowie ein leerer linker und rechter Teilbaum eingefuegt.
|
||||
* Ist der Binaerbaum nicht leer, wird das Inhaltsobjekt durch pContent
|
||||
* ersetzt. Die Teilbaeume werden nicht geaendert.
|
||||
*
|
||||
* @param pContent
|
||||
* neues Inhaltsobjekt vom Typ ContentType
|
||||
*/
|
||||
public void setContent(ContentType pContent) {
|
||||
if (pContent != null) {
|
||||
if (this.isEmpty()) {
|
||||
node = new BTNode<ContentType>(pContent);
|
||||
this.node.left = new BinaryTree<ContentType>();
|
||||
this.node.right = new BinaryTree<ContentType>();
|
||||
}
|
||||
this.node.content = pContent;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Anfrage liefert das Inhaltsobjekt des Binaerbaums. Wenn der
|
||||
* Binaerbaum leer ist, wird null zurueckgegeben.
|
||||
*
|
||||
* @return das Inhaltsobjekt der Wurzel vom Typ ContentType bzw. null, wenn
|
||||
* der Binaerbaum leer ist
|
||||
*/
|
||||
public ContentType getContent() {
|
||||
if (this.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return this.node.content;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Falls der Parameter null ist, geschieht nichts. Wenn der Binaerbaum leer
|
||||
* ist, wird pTree nicht angehaengt. Andernfalls erhaelt der Binaerbaum den
|
||||
* uebergebenen BinaryTree als linken Teilbaum.
|
||||
*
|
||||
* @param pTree
|
||||
* neuer linker Teilbaum vom Typ BinaryTree<ContentType>
|
||||
*/
|
||||
public void setLeftTree(BinaryTree<ContentType> pTree) {
|
||||
if (!this.isEmpty() && pTree != null) {
|
||||
this.node.left = pTree;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Falls der Parameter null ist, geschieht nichts. Wenn der Binaerbaum leer
|
||||
* ist, wird pTree nicht angehaengt. Andernfalls erhaelt der Binaerbaum den
|
||||
* uebergebenen BinaryTree als rechten Teilbaum.
|
||||
*
|
||||
* @param pTree
|
||||
* neuer linker Teilbaum vom Typ BinaryTree<ContentType>
|
||||
*/
|
||||
public void setRightTree(BinaryTree<ContentType> pTree) {
|
||||
if (!this.isEmpty() && pTree != null) {
|
||||
this.node.right = pTree;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Anfrage liefert den linken Teilbaum des Binaerbaumes. Wenn der
|
||||
* Binaerbaum leer ist, wird null zurueckgegeben.
|
||||
*
|
||||
* @return linker Teilbaum vom Typ BinaryTree<ContentType> oder null, wenn
|
||||
* der aktuelle Binaerbaum leer ist
|
||||
*/
|
||||
public BinaryTree<ContentType> getLeftTree() {
|
||||
if (!this.isEmpty()) {
|
||||
return this.node.left;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Anfrage liefert den rechten Teilbaum des Binaerbaumes. Wenn der
|
||||
* Binaerbaum (this) leer ist, wird null zurueckgegeben.
|
||||
*
|
||||
* @return rechter Teilbaum vom Typ BinaryTree<ContentType> oder null, wenn
|
||||
* der aktuelle Binaerbaum (this) leer ist
|
||||
*/
|
||||
public BinaryTree<ContentType> getRightTree() {
|
||||
if (!this.isEmpty()) {
|
||||
return this.node.right;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
#BlueJ class context
|
||||
comment0.target=Classification
|
||||
comment0.text=\r\n\ Blattknoten\ eines\ Entscheidungsbaums.\ Klassifiziert\ einen\ Datensatz,\r\n\ nachdem\ alle\ Entscheidungen\ des\ Pfades\ getroffen\ wurden.\r\n
|
||||
comment1.params=pClassification
|
||||
comment1.target=Classification(java.lang.String)
|
||||
comment1.text=\r\n\ Erstellt\ eine\ Klassifikation\r\n\r\n\ @param\ pClassification\ Name\ der\ Klasse\ (z.B.\ "Ja"\ oder\ "Nein")\r\n
|
||||
numComments=2
|
|
@ -0,0 +1,24 @@
|
|||
/**
|
||||
* Blattknoten eines Entscheidungsbaums. Klassifiziert einen Datensatz,
|
||||
* nachdem alle Entscheidungen des Pfades getroffen wurden.
|
||||
*/
|
||||
public class Classification extends DecisionNode {
|
||||
|
||||
// Die Klassifikation als String
|
||||
private String classification;
|
||||
|
||||
/**
|
||||
* Erstellt eine Klassifikation
|
||||
*
|
||||
* @param pClassification Name der Klasse (z.B. "Ja" oder "Nein")
|
||||
*/
|
||||
public Classification( String pClassification ) {
|
||||
classification = pClassification;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String decide( Dataset pDataset ) {
|
||||
return classification;
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,13 @@
|
|||
#BlueJ class context
|
||||
comment0.target=Dataset
|
||||
comment0.text=\r\n\ Ein\ Datensatz,\ der\ vom\ {@link\ DecisionTreeBuilder}\ im\ Entscheidungsbaum\r\n\ klassifiziert\ werden\ kann.\r\n\ <p>\r\n\ Basiert\ auf\ einer\ {@link\ java.util.HashMap}.\r\n
|
||||
comment1.params=
|
||||
comment1.target=Dataset()
|
||||
comment1.text=\r\n\ Erzeugt\ einen\ leeren\ Datensatz\r\n
|
||||
comment2.params=pAttribute
|
||||
comment2.target=java.lang.String\ get(java.lang.String)
|
||||
comment2.text=\r\n\ Gibt\ den\ Wert\ f\u00FCr\ ein\ Attribut\ in\ diesem\ Datensatz\ zur\u00FCck\ oder\r\n\ <code>null</code>,\ wenn\ das\ Attribut\ im\ Datensatz\ nicht\ existiert.\r\n\r\n\ @param\ pAttribute\ Name\ des\ Attributs.\r\n\ @return\ Wert\ im\ Datensatz\ oder\ <code>null</code>.\r\n
|
||||
comment3.params=pAttribute\ pValue
|
||||
comment3.target=void\ set(java.lang.String,\ java.lang.String)
|
||||
comment3.text=\r\n\ Setzt\ den\ Wert\ eines\ Attributs\ in\ diesem\ Datensatz.\r\n\r\n\ @param\ pAttribute\ Name\ des\ Attributs.\r\n\ @param\ pValue\ \ \ \ \ Neuer\ Wert\ des\ Attributs.\r\n
|
||||
numComments=4
|
|
@ -0,0 +1,40 @@
|
|||
/**
|
||||
* Ein Datensatz, der vom {@link DecisionTreeBuilder} im Entscheidungsbaum
|
||||
* klassifiziert werden kann.
|
||||
* <p>
|
||||
* Basiert auf einer {@link java.util.HashMap}.
|
||||
*/
|
||||
public class Dataset {
|
||||
|
||||
// Speicher für die Daten
|
||||
private java.util.HashMap<String, String> data;
|
||||
|
||||
/**
|
||||
* Erzeugt einen leeren Datensatz
|
||||
*/
|
||||
public Dataset() {
|
||||
data = new java.util.HashMap<String, String>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Wert für ein Attribut in diesem Datensatz zurück oder
|
||||
* <code>null</code>, wenn das Attribut im Datensatz nicht existiert.
|
||||
*
|
||||
* @param pAttribute Name des Attributs.
|
||||
* @return Wert im Datensatz oder <code>null</code>.
|
||||
*/
|
||||
public String get( String pAttribute ) {
|
||||
return data.getOrDefault(pAttribute, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Wert eines Attributs in diesem Datensatz.
|
||||
*
|
||||
* @param pAttribute Name des Attributs.
|
||||
* @param pValue Neuer Wert des Attributs.
|
||||
*/
|
||||
public void set( String pAttribute, String pValue ) {
|
||||
data.put(pAttribute, pValue);
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,9 @@
|
|||
#BlueJ class context
|
||||
comment0.target=Decision
|
||||
comment0.text=\r\n\ Innerer\ Knoten\ eines\ Entscheidungsbaums.\ Entscheidet\ basierend\ auf\r\n\ dem\ Wert\ eines\ Attributs\ eines\ {@link\ Dataset\ Datensatzes},\ ob\ im\ linken\ oder\r\n\ rechten\ Teilbaum\ weitergesucht\ werden\ muss.\r\n\ <p>\r\n\ Da\ es\ sich\ um\ <em>bin\u00E4re\ Entscheidungen</em>\ handelt\ wird\ immer\ nur\ der\ Wert\r\n\ f\u00FCr\ den\ linken\ Teilbaum\ angegeben\ und\ f\u00FCr\ alle\ anderen\ Werte\ der\ rechte\r\n\ Teilbaum\ gew\u00E4hlt.\r\n\ </p>\r\n
|
||||
comment1.params=pAttribute\ pValueLeft
|
||||
comment1.target=Decision(java.lang.String,\ java.lang.String)
|
||||
comment1.text=\r\n\ Erstellt\ eine\ bin\u00E4re\ Entscheidung.\r\n\r\n\ @param\ pAttribute\ Name\ des\ Attributs.\r\n\ @param\ pValueLeft\ Wert,\ wann\ im\ linken\ Teilbaum\ weitergesucht\ werden\ muss.\r\n
|
||||
comment2.params=pDataset
|
||||
comment2.target=java.lang.String\ decide(Dataset)
|
||||
numComments=3
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* Innerer Knoten eines Entscheidungsbaums. Entscheidet basierend auf
|
||||
* dem Wert eines Attributs eines {@link Dataset Datensatzes}, ob im linken oder
|
||||
* rechten Teilbaum weitergesucht werden muss.
|
||||
* <p>
|
||||
* Da es sich um <em>binäre Entscheidungen</em> handelt wird immer nur der Wert
|
||||
* für den linken Teilbaum angegeben und für alle anderen Werte der rechte
|
||||
* Teilbaum gewählt.
|
||||
* </p>
|
||||
*/
|
||||
public class Decision extends DecisionNode {
|
||||
|
||||
// Name des Attributs
|
||||
private String attribute;
|
||||
|
||||
// Wert, bei dem links weitergesucht werden soll
|
||||
private String valueLeft;
|
||||
|
||||
/**
|
||||
* Erstellt eine binäre Entscheidung.
|
||||
*
|
||||
* @param pAttribute Name des Attributs.
|
||||
* @param pValueLeft Wert, wann im linken Teilbaum weitergesucht werden muss.
|
||||
*/
|
||||
public Decision( String pAttribute, String pValueLeft ) {
|
||||
attribute = pAttribute;
|
||||
valueLeft = pValueLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String decide( Dataset pDataset ) {
|
||||
if( pDataset.get(attribute).equals(valueLeft) ) {
|
||||
return "left";
|
||||
} else {
|
||||
return "right";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
#BlueJ class context
|
||||
comment0.target=DecisionNode
|
||||
comment0.text=\r\n\ Ein\ Knoten\ im\ Entscheidungsbaum.\ Knoten\ sind\ entweder\ {@link\ Decision\ Entscheidungen}\r\n\ (innere\ Knoten)\ oder\ {@link\ Classification\ Klassifikationen}\ (Blattknoten).\r\n
|
||||
comment1.params=pDataset
|
||||
comment1.target=java.lang.String\ decide(Dataset)
|
||||
comment1.text=\r\n\ F\u00FChrt\ den\ Test\ der\ Entscheidung\ durch.\ Die\ Methode\r\n\ bekommt\ den\ Datensatz\ als\ Parameter\ und\ gibt\ einen\r\n\ von\ drei\ Strings\ zur\u00FCck\:\r\n\ <ol>\r\n\ <li>"left"\:\ Folge\ dem\ linken\ Teilbaum</li>\r\n\ <li>"right"\:\ Folge\ dem\ rechten\ Teilbaum</li>\r\n\ <li>Die\ finale\ Klassifikation,\ wenn\ dies\ ein\ Blatt\ des\ Baumes\ ist\ (z.B.\ "yes"\ oder\ "no")</li>\r\n\ </ol>\r\n
|
||||
numComments=2
|
|
@ -0,0 +1,19 @@
|
|||
/**
|
||||
* Ein Knoten im Entscheidungsbaum. Knoten sind entweder {@link Decision Entscheidungen}
|
||||
* (innere Knoten) oder {@link Classification Klassifikationen} (Blattknoten).
|
||||
*/
|
||||
public abstract class DecisionNode {
|
||||
|
||||
/**
|
||||
* Führt den Test der Entscheidung durch. Die Methode
|
||||
* bekommt den Datensatz als Parameter und gibt einen
|
||||
* von drei Strings zurück:
|
||||
* <ol>
|
||||
* <li>"left": Folge dem linken Teilbaum</li>
|
||||
* <li>"right": Folge dem rechten Teilbaum</li>
|
||||
* <li>Die finale Klassifikation, wenn dies ein Blatt des Baumes ist (z.B. "yes" oder "no")</li>
|
||||
* </ol>
|
||||
*/
|
||||
public abstract String decide( Dataset pDataset );
|
||||
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,14 @@
|
|||
------------------------------------------------------------------------
|
||||
Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt
|
||||
beschreiben.
|
||||
Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss),
|
||||
alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar
|
||||
zumindest die folgenden Angaben umfassen:
|
||||
------------------------------------------------------------------------
|
||||
|
||||
PROJEKTBEZEICHNUNG:
|
||||
PROJEKTZWECK:
|
||||
VERSION oder DATUM:
|
||||
WIE IST DAS PROJEKT ZU STARTEN:
|
||||
AUTOR(EN):
|
||||
BENUTZERHINWEISE:
|
|
@ -0,0 +1,3 @@
|
|||
#BlueJ package file
|
||||
#Thu Nov 19 10:29:11 CET 2020
|
||||
project.charset=UTF-8
|
Loading…
Reference in New Issue