master > master: code - suchalgorithmus für poison-Aufgabe

This commit is contained in:
RD
2021-10-26 13:39:58 +02:00
parent ecbf274be6
commit 01f69adcfb
5 changed files with 174 additions and 0 deletions

View File

@@ -37,6 +37,7 @@ def postChecks(L: List[int], **_):
def MaxSubSum(L: List[float]) -> Tuple[float, int, int]:
'''
Inputs: L = Liste von Zahlen
Outputs:
- maxSum = Wert der maximalen Summe einer Teilliste aufeinanderfolgender Elemente
- u, v = Indexes so dass die Teilliste [L[u], L[u+1], ..., L[v]] die maximale Summe aufweist
@@ -61,6 +62,7 @@ def MaxSubSum(L: List[float]) -> Tuple[float, int, int]:
def MaxSubSumDC(L: List[float]) -> Tuple[float, int, int]:
'''
Inputs: L = Liste von Zahlen
Outputs:
- maxSum = Wert der maximalen Summe einer Teilliste aufeinanderfolgender Elemente
- u, v = Indexes so dass die Teilliste [L[u], L[u+1], ..., L[v]] die maximale Summe aufweist
@@ -157,3 +159,21 @@ def rRandSum(L: List[float]) -> Tuple[float, int, int]:
u = i;
maxSum = total;
return maxSum, u, v;
# Sei N ∈ ℕ⁺
# Sei p so, dass 2^p ≤ N < 2^{p+1},
# Also p = floor(log₂(N)).
# Setze
# B(i,d) := {k < N | bit(k, i) = d}
# für i ∈ {0, 1, ..., p-1}
# und setze
# 𝒜 = {B(i,d) : i ∈ {0, 1, ..., p-1}, d ∈ {0,1}}.
# Seien k1, k2 ∈ N mit k1 ≠ k2.
# Dann existiert i ∈ {0, 1, ..., p-1},
# so dass
# d := bit(k1, i) ≠ bit(k2, i).
# Also
# k1 ∈ B(i, d) ∌ k2.
# Darum erfüllt 𝒜 die erwünschte Eigenschaft.
# Es gilt
# |𝒜| = 2p = 2·floor(log₂(N)) ∈ O(log(N)).