Bildschirmfoto 2024-01-19 um 00.32.30.png

Einfügen in einer Linked List vs Double Linked List: Linked List:

Double Linked List:

Löschen in einer Linked List vs Double Linked List: Linked List:

Double Linked List:

Comparable

public class Student implements Comparable<Student> {
    private String name;

    // constructor, getters and setters

    @Override
    public int compareTo(Student other) {
        return this.name.compareTo(other.getName());
    }
}

Comparator

public class StudentAgeComparator implements Comparator<Student> {
    @Override
    public int compare(Student s1, Student s2) {
        return s1.getAge() - s2.getAge();
    }
}

Bildschirmfoto 2024-01-19 um 00.32.39.png

Zeitkomplexität:

HashSet vs. TreeSet

  1. Interne Datenstruktur: ****HashSet verwendet eine Hash-Tabelle als interne Datenstruktur, während TreeSet einen Baum (genauer gesagt, einen Rot-Schwarz-Baum) verwendet.
  2. Sortierung der Elemente: In einem HashSet sind die Elemente nicht sortiert, während in einem TreeSet die Elemente natürlich sortiert sind (basierend auf ihrem natürlichen Vergleichsverfahren, d.h. sie müssen das Comparable-Interface implementieren) oder durch einen benutzerdefinierten Comparator, der bei der Erstellung des TreeSets bereitgestellt wird.
  3. Performance: Operationen wie Hinzufügen, Entfernen und Überprüfen, ob ein Element vorhanden ist, haben in einem HashSet eine konstante Zeitkomplexität von O(1). In einem TreeSet haben diese Operationen eine logarithmische Zeitkomplexität von O(log(n)) aufgrund der Baumstruktur.
  4. Null-Elemente: HashSet erlaubt ein Null-Element, während TreeSet dies nicht erlaubt, wenn ein natürlicher Vergleich oder ein benutzerdefinierter Comparator verwendet wird.

Bildschirmfoto 2024-01-19 um 00.32.49.png

Bildschirmfoto 2024-01-19 um 00.33.00.png

Bildschirmfoto 2024-01-19 um 00.33.15.png

Bildschirmfoto 2024-01-19 um 00.33.25.png

Bildschirmfoto 2024-01-19 um 00.33.37.png

Bildschirmfoto 2024-01-19 um 00.33.52.png

Bildschirmfoto 2024-01-19 um 00.34.03.png

Topologische Sortierung

  1. Wähle Knoten ohne Vorgänger aus Graph
  2. Lösche diesen Knoten aus dem Graph
  3. Wiederholen, bis kein Knoten im Graphen mehr vorhanden ist

Bildschirmfoto 2024-01-19 um 00.34.14.png

Traveling Salesman

Backtracking

Bounding-Funktion

Bildschirmfoto 2024-01-19 um 00.34.26.png

Branch and Bound

Bildschirmfoto 2024-01-19 um 00.34.37.png

Bildschirmfoto 2024-01-19 um 00.34.48.png

Bildschirmfoto 2024-01-19 um 00.35.03.png