Übungen (Fragen) Flashcards

1
Q

Erweitern Sie den Algorithmus zur Bestimmung der optimalen Edit-Distanz, so dass zusätzlich auch die Anzahl der co-optimalen Alignments zweier Sequenzen bestimmt wird.

A

Die Idee ist einer zusätzlichen Matrix. Die Anzahl der co-optimalen Alignments kann parallel zur Edit-Distanz-Berechnung mitgeführt werden, indem man für jeden Eintrag die Summe der möglichen Pfade speichert. Die Zeitkomplexität bleibt O(mn), da die Berechnungen unverändert sind. Der Speicherverbrauch verdoppelt sich, bleibt aber asymptotisch O(mn), da nur eine zusätzliche Matrix gespeichert wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Sequenzvergleiche – warum?

A

Erkennen von Mutationen und deren Auswirkungen. Ähnliche Sequenzen deuten auf gemeinsamen Ursprung hin. Identifikation unbekannter Genfunktionen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sequenzdistanzen - Eigenschaften

A

d ist eine Metrik wenn:
1. d(x,y) = 0 nur wenn x = y
2. d(x,y) = d(y,x) für alle x,y
3. d(x,y) ≤ 𝑑 (𝑥, 𝑧) + 𝑑 (𝑧, 𝑦) für alle x,y,z

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Rekursive Berechnung der Edit-Distanz Formel

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Needleman-Wunsch Komplexität

A

Wir berechnen jedes Feld einer zwei
-dimensionalen (quadratischen) Matrix einmal
* Für jedes Feld ‚überprüfen‘ wir eine konstante Anzahl an Vorgängern (genau 3)
* Zeitkomplexität: O(nm) (oder
O(n^2))
* Platzkomplexität: O(nm) (2
-D Matrix!)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Needleman-Wunsch-Algorithmus Ablauf

A
  1. Initialisierung
  2. Matrix-Füllung (match, mismatch, gap)
  3. Backtracking
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Rekursive Formel für alle Alignments

A

A(i,j)=A(i−1,j−1)+A(i−1,j)+A(i,j−1)
mit A(i,0) = 1 und A(0,j) = 1 als Basisfälle. Diese Formel zählt alle möglichen Alignments, auch nicht optimale.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Implementierung edit_recursive und edit_dynamic

A

Rekursiv: Zerlegt Problem in kleinere Instanzen und ruft sich selbst auf (ineffizient ohne Memoization).if len(x)=0 return len(y), if len (y) = 0 return len(x) ifx[-1] =y[-1] return edit_rec(x[:-1],y[:-1]) #berechnungen insert = edit_rec(x, y[:-1]) del = edit_rec(x[:-1], y) substr=edit_rec(x[:-1], y[:-1]) return 1+ min(insert, del, substr)
Dynamisch: Erstellt eine Matrix, füllt erste Zeile und Spalte mit Längen, dann füllt sie iterativ die restlichen Werte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Warum verwendet man einen eigenen Algorithmus zur Berechnung von lokalen Alignments, anstatt die globalen Alignments aller Paare von Substrings zu berechnen und sich das beste Alignment auszusuchen? Nennen Sie auch die Laufzeitkomplexität beider Strategien!

A

Globales Alignment für alle Substrings wäre O(n⁶), da O(n⁴) Vergleiche mit O(n²) Aufwand nötig sind. Lokales Alignment erkennt konservierte Regionen, ohne unähnliche Bereiche zu beeinflussen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Affine Gap-Kosten & Needleman-Wunsch

A

α: Kosten für Lückenöffnung, β: Kosten für Lückenerweiterung.
Needleman-Wunsch funktioniert nicht direkt, da affine Gap-Kosten drei Matrizen erfordern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Erläutern Sie, warum das Divide-and-Conquer Verfahren für paarweises Sequenzalignment nur linearen Speicherbedarf hat.

A

Speicherbedarf sinkt auf O(n), da nur zwei Zeilen der Matrix gespeichert werden. Vorwärts- und Rückwärtspass reduzieren Speicher, aber Zeit bleibt O(mn).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Erläutern Sie, wie sich die Zeitkomplexität im Vergleich zum Needleman-Wunsch Algorithmus (O(nm) verändert.

A

Zeit bleibt O(mn), da die Berechnungen gleich bleiben. Speicher sinkt auf O(n + m), weil nur zwei Zeilen gleichzeitig benötigt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Erläutern Sie, mit eigenen Worten, warum eine Erweiterung des Needleman-Wunsch Algorithmus (dynamische Programmierung) zur Berechnung multipler Sequenzalignments nicht effizient ist.

A

Needleman-Wunsch skaliert mit O(n^k) für k Sequenzen, was exponentiell ist. Speicherkosten steigen drastisch, da eine k-dimensionale Matrix benötigt wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Erläutern Sie die Laufzeit- und Speicherplatzkomplexität der Center-Star Approximation. Unterscheiden Sie dabei zuerst die einzelnen Phasen und erklären dann das Gesamtergebnis

A

Laufzeit: O(k²n²), da alle k Sequenzen paarweise verglichen werden. Speicher: O(n²), da pro Paar nur eine Matrix gespeichert wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Optimalität von multiplen Alignments

A

Center-Star ist nur eine Approximation, keine optimale Lösung. Paarweise Alignments sind nicht immer optimal, da sie nicht im Kontext aller Sequenzen optimiert werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Progressives Alignment & Problem

A

Sequenzen werden schrittweise ausgerichtet, basierend auf Ähnlichkeit. Fehler in frühen Schritten sind nicht korrigierbar und beeinflussen spätere Alignments.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

E-Wert Bedeutung

A

Niedriger E-Wert = hohe Signifikanz des Treffers. Hohe E-Werte normal bei kurzen Sequenzen, da zufällige Matches wahrscheinlicher sind.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

k-profil(x, k) und 18. k-distance(x, y, k)

A

Nutze Dictionary/Hashmap, um K-mers und ihre Häufigkeiten effizient zu speichern. K-Distanz: Vergleiche Häufigkeitsvektoren der Sequenzen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Maximale Anzahl Kanten im Suffixbaum

A

Ein Suffix Baum hat:
- Blätter: Genau n, da jedes Suffix ein Blatt darstellt.
- Innere Knoten: Jeder innere Knoten repräsentiert ein gemeinsames Präfix von mindestens zwei Suffixen. Die maximale Anzahl innerer Knoten beträgt n−1, da jeder innere Knoten mindestens zwei Kinder haben muss.
-Baumeigenschaft: Ein Baum mit mmm Knoten hat immer m – 1 Kanten. Der Suffix Baum hat n Blätter und höchstens n−1 innere Knoten, also maximal 2n – 1 Knoten insgesamt.
3. Die maximale Anzahl an Kanten ergibt sich aus:
Kanten = (Anzahl Blätter) + (Anzahl innerer Knoten) −1
= 𝒏 + (𝒏 − 𝟏) − 𝟏 = 𝟐𝒏 – 𝟐
Begründung der n - 1 inneren Knoten: Jeder innere Knoten ist der Startpunkt eines neuen Teilbaums. Da jedes Suffix mit einem anderen Suffix nur an einer bestimmten Position übereinstimmen kann, gibt es höchstens n−1n−1 solcher inneren Knoten.
Fazit: Die Anzahl der Kanten in einem Suffix Baum ist also durch 2n – 2 beschränkt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Anwendungen von Suffixbäumen

A

Wiederholungssuche: Identifikation von Tandem-Repeats, z. B. Huntington-Krankheit.
Genomische Duplikationen: Analyse evolutionärer Konservierung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Laufzeit der Suffixbaum-Konstruktion

A

Mit Ukkonen-Algorithmus O(n), naiver Ansatz O(n²).

22
Q

Algorithmus: Längstes häufigstes Teilwort im Suffixbaum

A

1.Konstruiere Suffixbaum (O(n)).
2.Zähle Häufigkeiten durch DFS (O(n)).
3.Finde längstes häufigstes Teilwort (O(n)). Gesamt: O(n).

23
Q

Suffix-Array vs. Suffixbaum

A

Direkte Konstruktion: O(n log n) (z. B. mit SA-IS).
Suffixbaum → Suffix-Array: O(n).
Problem: Längstes gemeinsames Substring ist mit Suffixbaum effizienter.

24
Q

Burrows-Wheeler-Transformation

A

BWT ist bijektiv, da sie mit LF-Mapping umkehrbar ist.

25
Greedy-Algorithmus vs. optimaler Pfad
Greedy-Algorithmus liefert nicht immer das optimale Ergebnis. Superstring-Problematik: Größere Werte von l führen zu längeren Approximationen.
26
Eulerpfade & Laufzeit
Hierholzer-Algorithmus findet Eulerpfade in O(E) durch DFS + Rückverbindung.
27
Wann ist D ultrametrisch?
4. Distanzmatrix D ist additiv Kombination von 4 Punkten erfüllt (iv) eindeutiger binärer ungewurzelter Baum ---> dxy +duv <= dxu + dyv = dxv + dyu eindeutiger binärer gewurzelter Baum, in dem alle Blätter die gleiche Distanz zur Wurzel haben ---> dxy <= dxz = dyz
28
Neighbor-Joining & Laufzeit
Berechnet phylogenetische Bäume durch iterative Fusion von Clustern. Laufzeit: O(n³).
29
Was sind P und NP und wie ordne ich ein Problem in diese Klassen ein?
P = Entscheidungsprobleme, die in polynomieller Zeit gelöst werden können * NP = Entscheidungsprobleme, die in polynomieller Zeit verifiziert werden können NP-vollständig: schwerste Probleme in NP
30
Was ist Sequenzalignment?
Sequenzalignment ist eine Methode, die biologische Sequenzen (DNA, RNA, Proteine) so anzuordnen, dass die Unterschiede und Ähnlichkeiten verglichen werden können.
31
Wie funktioniert Dynamische Programmierung?
Man zerlegt das Problem in kleinere Teilprobleme und speichert deren Lösungen, um doppelte Berechnungen zu vermeiden. Dadurch wird das Problem effizient gelöst
32
Wie kann man die Platzkomplexität von Needleman-Wunsch optimieren?
Man reduziert den Speicherbedarf von O(nm) auf O(n), indem man nur zwei Zeilen speichert (die aktuelle und die vorherige)
33
Was ist der Hauptunterschied zwischen globalem und lokalem Alignment?
Globales Alignment (Needleman-Wunsch) vergleicht die gesamte Länge der beiden Sequenzen. Lokales Alignment (Smith-Waterman) sucht nur den besten übereinstimmenden Teilbereich innerhalb der Sequenzen.
34
Warum werden bei Smith-Waterman negative Werte in der Matrix auf 0 gesetzt?
Smith-Waterman setzt negative Werte auf 0, damit nur positive Übereinstimmungen weiterverfolgt werden. Dadurch stoppt das Alignment automatisch, wenn es nicht mehr sinnvoll ist, und es bleibt auf den besten Teilbereich begrenzt.
35
Wie funktioniert das Divide & Conquer Prinzip?
Ein Problem wird rekursiv in kleinere Teilprobleme unterteilt, die unabhängig voneinander gelöst werden. Die Teillösungen werden anschließend kombiniert, um die Gesamtlösung zu erhalten.
36
Wie funktioniert der Hirschberg-Algorithmus? (Berechne Edit-Matrix, aber speichere nur zwei Zeilen)
Der Hirschberg-Algorithmus berechnet die Edit-Distanz zwischen zwei Sequenzen effizient, indem er Speicher spart. Er nutzt Divide & Conquer und speichert nicht die gesamte Edit-Matrix, sondern nur zwei Zeilen. Zuerst wird die Mitte der optimalen Ausrichtung berechnet, indem nur die letzten zwei Zeilen der dynamischen Programmierung gespeichert werden. Danach wird das Problem rekursiv für die zwei Hälften der Sequenzen gelöst.
37
Welche Komplexität hat der Hirschberg-Algorithmus?
Der Hirschberg-Algorithmus hat eine Laufzeit von O(nm), aber benötigt nur O(min(n, m)) Speicherplatz. (Anmerkung: Die Zeitkomplexität ist korrekt, aber die Speicherkomplexität ist das wichtigste Merkmal des Algorithmus!)
38
Warum sind MSAs oft aussagekräftiger als paarweise Alignments?
Ähnlichkeiten, die in einem paarweisen Alignment verdeckt sind, durch das Multiple Sequence Alignment (MSA) sichtbar werden.Mehrdeutigkeiten durch zusätzliche Sequenzen aufgelöst werden und evolutionäre Beziehungen besser sichtbar werden.
39
Wie werden MSAs bewertet? (Sum-of-Pairs vs. Baum-Scores/Kosten)
Sum-of-Pairs (SP)-Score: Summiert die paarweisen Alignmentscores über alle möglichen Paare. Baum-basierte Scores: Nutzen ein phylogenetisches Baum-Modell, um evolutionäre Beziehungen zu gewichten.
40
Wie funktioniert die Center-Star Approximation?
Зaarweise Vergleiche mit Einheitkosten durchgeführt werden und die Sequenz mit den minimalen Kosten als „Center“ gewählt wird. Alle anderen Sequenzen werden einzeln gegen die Center-Sequenz ausgerichtet.
41
Entwerfen Sie einen Algorithmus, der basierend auf einem Suffixbaum zu Text T den längsten Substring aus der Menge der häufigsten Teilworte zurückgibt. Beschreiben Sie dafür die Schritte ihres Algorithmus, es ist kein Pseudocode notwendig. Der Algorithmus soll eine lineare Laufzeit haben, erklären Sie daher auch die Laufzeitkomplexität ihres Algorithmus.
1. Erstellen des Suffixbaum: Konstruiere den Suffixbaum von T (man kann z.B mit dem Ukkonen-Algorithmus oder einem ähnlichen Verfahren). 2. Berechnung der Häufigkeit jedes Teilwortes: Die Häufigkeit jedes Teilwortes wird berechnet, indem für jeden Knoten im Suffixbaum die Anzahl der Blätter in seinem Teilbaum gezählt wird. Diese Anzahl entspricht der Häufigkeit des Teilwortes, das der Knoten repräsentiert. Die Werte werden für jeden Knoten gespeichert, um später das längste häufigste Teilwort zu bestimmen. 3. Suche nach dem längsten häufigsten Teilwort: Für jeden Knoten wird die Länge des repräsentierten Teilwortes berechnet, basierend auf der Summe der Längen der Kanten von der Wurzel zu diesem Knoten. Die Häufigkeit des Teilwortes wird mit dem bisherigen Maximum verglichen, und das längste Teilwort mit der höchsten Häufigkeit wird festgehalten. Bei gleicher Häufigkeit wird das längere Teilwort bevorzugt. 4. Ergebnisses: Gib das Teilwort zurück Laufzeit: 1. Erstellen des Suffixbaums: O(n), weil der Ukkonen-Algorithmus oder ähnliche Verfahren den kompakten Suffixbaum in linearer Zeit konstruieren können. 2. Berechnung der Häufigkeiten: O(n), da die Anzahl der Blätter in einem Teilbaum durch eine Tiefensuche (DFS) in linearer Zeit bestimmt werden kann. 3. Finden des längsten häufigsten Teilwortes: O(n) Gesamtlaufzeit: O(n)+O(n)+O(n)=O(n)
42
Wie kann man mit Hilfe eines Suffixbaumes das längste palindromische Teilwort eines Textes T finden? Beziehen Sie sich bei ihrer Erklaerung auf das Beispiel T = BANANAS. Beschreiben Sie ihre Idee, es ist nicht n¨otig, den Baum explizit zu zeichnen.
Um das längste palindromische Teilwort zu finden, suchen wir nach dem längsten gemeinsamen Präfix (LCP) zwischen den Suffixen von T und TR. Dies entspricht den Teilwörtern von T, die auch in TR vorkommen und somit palindromisch sind. Die Suche nach dem LCP erfolgt durch: Identifikation der Knoten im Suffixbaum, die sowohl Suffixe von T (links vom Trennzeichen) als auch Suffixe von TR (rechts vom Trennzeichen) enthalten. Berechnung der Länge der gemeinsamen Präfixe für diese Knoten. Bestimmung des längsten Präfixes unter diesen. Palindromische Teilwörter sind solche, die in T und TR identisch sind, da TR die umgekehrte Darstellung von T ist. Durch den Suffixbaum und die Suche nach dem LCP zwischen T und TR identifizieren wir die längsten Abschnitte, die sowohl in T als auch in TR vorkommen. Beispiel: Für T=BANANAS: TR=SANANAB T$TR$=BANANAS$SANANAB$ Im Suffixbaum des kombinierten Strings identifizieren wir die Knoten, die Suffixe von T und TR enthalten. Das längste gemeinsame Präfix dieser Suffixe ist ANANA.
43
Erklären Sie allgemein, wie sich die Wahl von l auf das Finden eines kürzesten gemeinsamen Superstrings auswirkt.
-ein zu kleines l führt zu einem hohen Rechnenaufwand und ineffizienten Superstrings, da mehr mögliche Überlappungen berücksichtigen werden müssen -ein zu großes l könnte zu mehrere Teilgraphen führen und das wir nicht assemblieren können
44
Eulerpfad
-starte an einem Knoten mit ungeradem Grad (falls nicht existiert, beliebiger) -folge den Kanten des Graphen, wobei jede Kante nur einmal verwendet wird -falls ein Teilzyklus entdeckt wird, speichere ihn und setze den Weg an einem noch nicht vollständig besuchten Knoten fort -verknüpfe die Teilzyklen zu einem vollständigen Eulerpfad Laufzeit -> O(E) oder O(V+E)
45
Was sagt ein Element der Edit-Matrix aus?
Ein Element M(i,j) in der Edit-Matrix gibt den optimalen Edit-Score oder die Edit-Distanz für das Alignment der ersten i Zeichen der Sequenz S und der ersten j Zeichen der Sequenz T an.
46
Hirschberg Algorithmus
Der Hirschberg-Algorithmus nutzt die Forwärts-Rückwärts-Technik, um den optimalen Schnittpunkt für das Alignment effizient zu bestimmen. Divide (Teilen): Anstatt die gesamte Edit-Matrix zu speichern, berechnet der Algorithmus nur die Kosten der ersten Hälfte des Alignments (Vorwärtsrichtung) und danach die zweite Hälfte (Rückwärtsrichtung). Durch diesen Ansatz wird ein optimaler Schnittpunkt in der Mitte der Sequenzen bestimmt. Conquer (Erobern): Nach der Bestimmung des Schnittpunkts wird das Problem rekursiv in kleinere Teilprobleme zerlegt. Das finale Alignment ergibt sich als Konkatenation der einzelnen optimalen Teil-Alignments. 📌 Vorteil: Der Algorithmus reduziert den Speicherverbrauch von O(mn) auf O(n) und eignet sich besonders für lange Sequenzen, wo eine vollständige Edit-Matrix zu groß wäre.
47
Pseudocode für max_prefix(x, y)
def max_prefix(x, y): z = [] # Liste für das gemeinsame Präfix for i in range(min(len(x), len(y))): # Nur bis zur Länge der kürzeren Sequenz if x[i] == y[i]: z.append(x[i]) # Übereinstimmende Zeichen zum Präfix hinzufügen else: break # Falls eine Differenz gefunden wird, abbrechen return z # Gemeinsames Präfix zurückgeben
48
Funktion build_BWT(S) ausgeben
Funktion build_BWT(S): 1. Rufe generate_rotations(S) auf, um alle zyklischen Rotationen zu erhalten. 2. Sortiere die Liste der Rotationen lexikografisch. 3. Extrahiere die letzte Spalte der sortierten Matrix: - Erstelle eine leere Zeichenkette BWT. - Für jede Zeile rot in der sortierten Liste: - Hänge das letzte Zeichen von rot an BWT an. 4. Gib die BWT-Sequenz zurück.
49
Erzeugung der Rotationen und die Berechnung der BWT
Funktion generate_rotations(S): n = Länge von S Erstelle eine leere Liste rotations Für i von 0 bis n-1: - Füge die Rotation S[i:] + S[:i] zur Liste rotations hinzu Gib die Liste rotations zurück.
50
inverseBWT
function inverseBWT (string s) create empty table repeat length(s) times // first insert creates first column insert s as a column of table before first column of the table sort rows of the table alphabetically return (row that ends with the 'EOF' character)