mirror of
https://github.com/2martens/uni.git
synced 2026-05-06 11:26:25 +02:00
AD-3: 4a bearbeitet.
This commit is contained in:
@ -84,6 +84,28 @@ Jim Martens (6420323)}
|
|||||||
\subsection{} %c
|
\subsection{} %c
|
||||||
\section{} %4
|
\section{} %4
|
||||||
\subsection{} %a
|
\subsection{} %a
|
||||||
|
\begin{verbatim}
|
||||||
|
function RANDOM(k):
|
||||||
|
string bitmask = '';
|
||||||
|
for (int i = 0; i < k; i++):
|
||||||
|
bitmask += (string) werfeMuenze();
|
||||||
|
end for
|
||||||
|
|
||||||
|
if bitmask.isEmpty():
|
||||||
|
return A[0];
|
||||||
|
endif
|
||||||
|
|
||||||
|
int index = stringToBinary(bitmask);
|
||||||
|
return A[index];
|
||||||
|
end function
|
||||||
|
\end{verbatim}
|
||||||
|
Nach $k$-maligem Werfen einer Münze ergibt sich eine Zahl mit $k$ Bits. Die größte darstellbare Index ist damit $2^{k}$, wodurch alle Elemente des Arrays abgedeckt werden können. Da bei dem Münzwurf die $0$ und die $1$ gleich wahrscheinlich sind, ergibt sich nach $k$-maligem Werfen somit eine Gesamtwahrscheinlichkeit für den Index von $\frac{1}{2^{k}}$. Somit wird jedes Element des Arrays mit der gleichen Wahrscheinlichkeit von der Funktion zurückgegeben. Hat das Array nur ein Element, dann wird auch immer dieses Element zurückgegeben.
|
||||||
|
|
||||||
|
Da immer $k$-Mal eine Münze geworfen wird, ist die Anzahl nötiger Münzwürfe auch immer in $\mathcal{O}(\log n)$. Dies ergibt sich so:
|
||||||
|
\[
|
||||||
|
\mathcal{O}(\log n) = \mathcal{O}(\log(2^{k})) = \mathcal{O}(k \cdot \log 2) = \mathcal{O}(k)
|
||||||
|
\]
|
||||||
|
Da $\log 2$ eine Konstante ist, ist sie bei der Betrachtung der asymptotischen Laufzeit irrelevant. Damit ist nun auch gezeigt, dass die Anzahl nötiger Wünzwürfe $\mathcal{O}(\log n)$ garantiert.
|
||||||
\subsection{} %b
|
\subsection{} %b
|
||||||
\subsection{} %c
|
\subsection{} %c
|
||||||
\section{} %5
|
\section{} %5
|
||||||
|
|||||||
Reference in New Issue
Block a user