TU Darmstadt · 알고리즘 및 자료구조(Algorithmen und Datenstrukturen)

오늘의 AUD 학습

오늘 바로 실행할 복습 3개, 다시 확인할 약점 개념, 복사 가능한 oral/MC/exercise 프롬프트를 한곳에 모았습니다.

49출처 파일
529검색용 자료 조각
30학습 주제
0약점 기록

지금 복습할 내용

오늘 우선순위가 가장 높은 세 개입니다.

  1. 우선순위 66객관식 함정 훈련

    란다우 기호, 증가율 등급, 실행시간 증명 (Landau symbols, growth classes, runtime proofs)

    점근 표기와 실행시간 분석

    AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

    복습 시점
    2026-08-06
    학습 방식
    객관식 함정 훈련
  2. 우선순위 65구두 진단

    루프 불변식과 정확성 증명 (Loop invariants and correctness proofs)

    알고리즘·자료구조·삽입 정렬·불변식

    AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

    복습 시점
    2026-08-06
    학습 방식
    구두 진단
  3. 우선순위 64손풀이 연습

    점화식과 마스터 정리 (Recurrences, Master theorem)

    분할 정복·정렬·마스터 정리

    AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

    복습 시점
    2026-08-06
    학습 방식
    손풀이 연습

오늘 다시 볼 약점 개념

지금 확인해야 할 약점입니다.

  • 오늘 예정된 약점 복습이 없습니다학습 기록이 쌓이면 약점 우선 순서가 나타납니다.

개인 맞춤 설명 순서

문제 풀이 로그와 약점 기록이 쌓이면 설명 순서를 약점 우선으로 재정렬합니다.

  1. 학습 기록이 쌓이기 전의 기본 학습 경로객관식 함정 훈련

    란다우 기호, 증가율 등급, 실행시간 증명 (Landau symbols, growth classes, runtime proofs)

    1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
    2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
    3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
    4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
  2. 학습 기록이 쌓이기 전의 기본 학습 경로구두 진단

    루프 불변식과 정확성 증명 (Loop invariants and correctness proofs)

    1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
    2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
    3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
    4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
  3. 학습 기록이 쌓이기 전의 기본 학습 경로손풀이 연습

    점화식과 마스터 정리 (Recurrences, Master theorem)

    1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
    2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
    3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
    4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
  4. 학습 기록이 쌓이기 전의 기본 학습 경로객관식 함정 훈련

    정렬 성질과 비교 기반 하한 (sorting properties, comparison lower bounds)

    1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
    2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
    3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
    4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
  5. 학습 기록이 쌓이기 전의 기본 학습 경로손풀이 연습

    이진 탐색 트리 불변식, 순회 순서, 높이에 따른 비용 (BST invariant, traversal, height-sensitive cost)

    1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
    2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
    3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
    4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.

오늘의 복습

  1. 점근 표기와 실행시간 분석 — 란다우 기호, 증가율 등급, 실행시간 증명 (Landau symbols, growth classes, runtime proofs) (객관식 함정 훈련, 2026-08-06 복습)
  2. 알고리즘·자료구조·삽입 정렬·불변식 — 루프 불변식과 정확성 증명 (Loop invariants and correctness proofs) (구두 진단, 2026-08-06 복습)
  3. 분할 정복·정렬·마스터 정리 — 점화식과 마스터 정리 (Recurrences, Master theorem) (손풀이 연습, 2026-08-06 복습)
  4. 정렬·점근 분석·분할 정복 — 정렬 성질과 비교 기반 하한 (sorting properties, comparison lower bounds) (객관식 함정 훈련, 2026-08-06 복습)
  5. 연결 리스트·트리 순회·이진 탐색 트리 — 이진 탐색 트리 불변식, 순회 순서, 높이에 따른 비용 (BST invariant, traversal, height-sensitive cost) (손풀이 연습, 2026-08-06 복습)

약점 개념

  • 아직 기록된 약점이 없습니다퀴즈를 풀고 틀린 개념을 저장하면 여기에 표시됩니다.

퀴즈 기록

  • 아직 저장된 퀴즈가 없습니다객관식 훈련부터 시작해 보세요.

SoSe 2025 · 42점

SO25 객관식 완전 학습

복기 문항을 개념별로 나누어 독일어 원문, 한국어 번역, 선택지별 근거와 반례를 학습합니다. 각 문항에는 독립적인 초보자용 개념 페이지가 있습니다.

10/10개 챕터 준비됨객관식 열기 →

SoSe 2025 · 서술형 문제 3–8

SO25 서술형 완전 풀이

24개 소문제·학습 단위를 선수 개념, 작은 예제, 상태 그림, 단계별 실제 풀이, 검산 순서로 공부합니다. 각 단위는 별도의 독립 학습 페이지로도 열 수 있습니다.

24개 독립 학습 페이지서술형 열기 →

시험 직전 요약 안내

영문 메모를 카드로 나열하지 않고, 한국어 개념 강의로 이어지는 순서만 간결하게 정리했습니다.

  1. 점근 표기와 실행시간 핵심

    점근 표기와 실행시간 분석 · 정렬·점근 분석·분할 정복

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  2. 루프 불변식 증명 틀

    알고리즘·자료구조·삽입 정렬·불변식

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  3. 점화식과 마스터 정리

    분할 정복·정렬·마스터 정리 · 정렬·점근 분석·분할 정복

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  4. 정렬 성질과 비교 기반 하한

    정렬·점근 분석·분할 정복 · 하한·기수 정렬·스택·큐

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  5. 탐색 트리와 사전 연산의 경계

    연결 리스트·트리 순회·이진 탐색 트리 · Balanced search trees

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  6. 그래프 알고리즘의 전제조건

    Graph traversal, reachability, topological sorting, strongly connected components · 최소 신장 트리·Prim·Kruskal·최단경로

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

  7. 객관식 반례 점검 순서

    시험 복기 자료 · 점근 표기와 실행시간 분석

    자세한 정의·공식·반례는 아래 개념 강의에서 한국어 설명과 함께 확인하세요.

연습 시작

오늘 추천된 구두시험, 객관식, 손풀이 세션을 시작하고 끝난 뒤 \(\text{SESSION}_{\text{LO}}\,G_{\text{JSON}}\)SESSION(LOG)(JSON)을 기록합니다.

바로 복사할 학습 프롬프트

Discord/OpenClaw에 붙여 넣을 오늘의 세 가지 세션입니다.

구두 진단우선순위 65

루프 불변식과 정확성 증명 (Loop invariants and correctness proofs)

객관식 함정 훈련우선순위 66

란다우 기호, 증가율 등급, 실행시간 증명 (Landau symbols, growth classes, runtime proofs)

단계별 손풀이우선순위 64

점화식과 마스터 정리 (Recurrences, Master theorem)

구두시험 연습 만들기

주제, 학습 깊이, 문항 수를 바꾸면 구두 진단 프롬프트를 즉석에서 만듭니다.

생성된 학습 프롬프트

준비됨

학습 기록 저장 순서

세션이 끝나면 학습 기록 JSON을 받아 퀴즈·약점·활동 로그에 반영합니다.

  1. 튜터 세션 진행

    위 프롬프트로 구두시험, 객관식, 손풀이 세션을 진행합니다.

  2. 학습 기록 확인

    마지막에 나온 학습 기록 JSON을 확인합니다.

  3. 허브 다시 만들기

    로그를 저장한 뒤 학습 허브를 다시 만들면 개인화 순서가 바뀝니다.

{
  "quiz_log": [
    {
      "date": "YYYY-MM-DD",
      "topic": "AUD",
      "score": "partial"
    }
  ],
  "weakness_log": [
    {
      "date": "YYYY-MM-DD",
      "topic": "AUD",
      "concept": "concept name",
      "severity": "medium",
      "source": "question id",
      "note": "what was missed",
      "next_action": "what to review",
      "mode": "oral"
    }
  ],
  "activity_log": [
    {
      "date": "YYYY-MM-DD",
      "mode": "oral",
      "summary": "session summary"
    }
  ]
}

객관식 점검표

정확한 전제 조건과 반례를 먼저 확인합니다.

이진 탐색 트리와 순회(BSTs and traversals)

이진 탐색 트리와 순회(BSTs and traversals)

오프닝: BST(Binary Search Tree, binärer Suchbaum)는 '정렬된 숫자 그림'이 아니라, 한 번 비교할 때마다 한쪽 subtree(Teilbaum) 전체를 버리게 해 주는 약속입니다. 예를 들어 70을 찾는데 root가 50이면 50 이하가 모인 왼쪽은 볼 필요가 없습니다. 오른쪽으로 가서 80을 만나면 이번에는 80보다 큰 쪽을 버리고 왼쪽으로 갑니다. 그래서 좋은 BST에서는 search가 빠르지만, tree가 한 줄 chain처럼 망가지면 linked list처럼 느려집니다. 선수 지식: tree(Baum)는 node(Knoten)들이 parent-child 관계로 연결된 구조입니다. 시작점은 root(Wurzel), child가 없는 node는 leaf(Blatt), 어떤 node 아래에 매달린 전체 부분은 subtree(Teilbaum)입니다. depth(Tiefe)는 root에서 현재 node까지 내려간 거리이고, height(Höhe)는 현재 node 또는 tree에서 가장 깊은 leaf까지 내려가는 최대 거리입니다. Lecture 03은 empty tree의 height를 -1로 둡니다. Binary tree(binärer Baum)는 각 node가 left child와 right child를 각각 최대 하나씩 가지는 tree입니다. 1단계 핵심 정의: BST는 binary tree에 ordering invariant를 붙인 것입니다. 이 페이지에서는 Sheet05 삽입 예시와 맞추어 모든 node v에 대해 left subtree의 모든 \(\text{key} \le v.\text{key} < \text{right} \text{subtree}\)key ≤ v.key < right subtree의 모든 key 라는 duplicate convention을 씁니다. 단, Lecture 03의 일반 표기는 오른쪽 subtree에 >=를 허용하는 형태이므로, 시험에서는 duplicate가 어느 쪽으로 가는 convention인지 먼저 말해야 합니다. 중요한 말은 subtree-wide입니다. 바로 왼쪽 child 하나만 작다고 충분한 것이 아니라, 왼쪽 subtree 안의 모든 descendant가 ancestor가 만든 upper bound를 지켜야 합니다. 2단계 search mental model: BST search는 root에서 시작해서 key를 비교하고 딱 한 방향만 고릅니다. \(k \le \text{current}.\text{key}\)k ≤ current.key이면 왼쪽, \(k > \text{current}.\text{key}\)k > current.key이면 오른쪽으로 갑니다. 반대쪽 subtree 전체는 후보에서 사라집니다. 그래서 search path는 한 줄입니다. 하지만 Sheet05 G5 같은 path 검증 문제에서는 바로 이전 node만 보지 말고, root부터 내려오며 생긴 lower bound와 upper bound를 계속 들고 가야 합니다. 오른쪽으로 내려가면 lower bound가 올라가고, 왼쪽으로 내려가면 upper bound가 내려갑니다. 3단계 traversal mental model: traversal(Traversierung)은 tree 모양을 바꾸는 연산이 아니라, 같은 tree를 어떤 순서로 읽을지 정하는 규칙입니다. Preorder는 root-left-right라서 root first, inorder는 left-root-right라서 root middle, postorder는 left-right-root라서 root last입니다. BST에서 inorder가 sorted order를 주는 이유는 traversal 규칙 하나 때문이 아니라 BST invariant와 결합되기 때문입니다. Lecture 03은 서로 다른 binary tree가 같은 inorder 또는 preorder를 가질 수 있음을 보여 주므로, traversal 하나만으로 shape를 항상 복원할 수 있다고 말하면 안 됩니다. 4단계 update 연산: insert는 실패한 search가 nil에 도착한 자리에 새 node를 붙입니다. delete는 leaf 삭제, one-child bypass, two-child replacement로 나눕니다. 두 child가 있으면 아무 leaf나 올리는 것이 아니라 \(\text{successor} = \min(\text{right} \text{subtree})\)successor = min(right subtree)또는 \(\text{predecessor} = \max(\text{left} \text{subtree})\)predecessor = max(left subtree)를 써서 BST invariant를 보존합니다. Sheet05 G4(c)는 15, 70, 80 삭제를 통해 이 case 구분을 연습시킵니다. 5단계 runtime: traversal은 모든 node를 한 번씩 방문하므로 \(\Theta(n)\)Θ(n)입니다. BST search, insert, delete는 한 root-to-leaf path를 따라가므로 \(O(h)\)O(h)입니다. h가 \(\Theta(\log n)\)Θ(log n)이면 \(O(\log n)\)O(log n)이지만, plain BST는 자동으로 balanced가 아닙니다. 정렬된 입력을 계속 넣으면 \(h = \Theta(n)\)h = Θ(n)이 되어 search/insert/delete가 \(O(n)\)O(n)이 될 수 있습니다. Sheet05 G6(b)의 BST-sort best case \(O(n \log n)\)O(n log n)\(\text{worst} \text{case} \Theta(n^{2})\)worst case Θ(n²)는 이 height 차이에서 나옵니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

점근 표기(Asymptotic notation)

점근 표기(Asymptotic notation)

Asymptotic notation(Landau-Notation)은 실제 초 단위 시간이 아니라 입력 크기 n이 충분히 커졌을 때 Laufzeit이 어떤 성장급(Wachstumsklasse)에 속하는지 말하는 언어입니다. 작은 n에서의 우연한 교차, 상수배, 낮은 차수항을 버리고 dominant term을 찾은 뒤, O, Omega, Theta, o 중 문제의 방향에 맞는 가장 제한적인 표기(restriktivste Notation)를 고르는 것이 핵심입니다. Sheet02와 2025 기억 프로토콜은 함수 단순화, 부등식으로 주어진 upper/lower bound, 그리고 중첩 루프의 \(\Theta(n \log n)\)Θ(n log n) 함정을 반복해서 묻습니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

루프 불변식과 정확성 증명

Loop invariants and correctness

Loop invariant(Schleifeninvariante)는 loop의 같은 시점에서 반복해서 참이어야 하는 상태 문장입니다. AUD에서는 보통 각 반복 직전의 상태를 잡고, Initialization, Maintenance/Fortsetzung, Termination/Terminierung 세 의무로 partial correctness를 보입니다. Vorlesung/01Introduction.pdf는 algorithm characteristic로 Korrektheit와 Terminierung을 구분하고, Sheet01은 insertion sort와 invariant proof를 연습시킵니다. 정렬 proof에서는 sorted만 말하면 약합니다. 원래 원소를 잃지 않았다는 permutation 또는 multiset preservation까지 같이 말해야 postcondition(Nachbedingung)이 됩니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

점화식과 마스터 정리

Recurrences and Master theorem

Recurrence(Rekurrenz)는 recursive algorithm의 실행 시간 T(n)을 더 작은 입력의 실행 시간으로 다시 쓰는 식입니다. Master theorem(Mastertheorem)은 \(T(n)=a\,T(n/b)+f(n)\)T(n)=aT(n/b)+f(n)꼴에서 recursion tree의 leaf 쪽 기준 \(n^{\log_{b} a}\)n^(log_b a)와 현재 level의 바깥 작업 f(n)을 비교해 tight bound를 빠르게 고르는 규칙입니다. 시험에서는 case 번호를 외우기보다 pseudocode에서 a, b, f(n)을 읽고, baseline을 계산하고, f(n)과 baseline 사이에 polynomial gap이 있는지 말해야 합니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

정렬과 비교 기반 하한

Sorting and lower bounds

정렬(sorting, Sortieren)은 단순히 숫자를 예쁘게 나열하는 문제가 아니라, 알고리즘이 입력에 대해 어떤 정보를 얻을 수 있는지 묻는 모델 문제입니다. 비교 기반 정렬(comparison-based sorting)은 두 원소를 비교한 yes/no 결과만으로 순서를 알아냅니다. 그래서 한 번의 비교는 가능한 세계를 최대 두 갈래로만 줄입니다. 서로 다른 n개 key의 가능한 입력 순열은 n!개이므로, 올바른 비교 기반 정렬은 worst case에서 그 많은 경우를 구분할 만큼의 비교를 해야 합니다. 그 결론이 \(m \ge \log_{2}(n!) = \Omega(n \log n)\)m ≥ log2(n!) = Ω(n log n)입니다. 이 문장은 RadixSort나 CountingSort처럼 digit, bucket, key range를 직접 쓰는 알고리즘에는 그대로 적용되지 않습니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

AVL 트리와 레드-블랙 트리

AVL 트리와 레드-블랙 트리

AVL tree와 red-black tree는 plain BST가 한 줄짜리 chain으로 망가지는 문제를 막는 balanced search tree입니다. 둘 다 먼저 BST order invariant를 만족해야 하고, 그 위에 height를 작게 유지하는 balance invariant를 추가합니다. AVL은 각 node의 왼쪽과 오른쪽 subtree 높이 차이를 최대 1로 제한합니다. 삽입이나 삭제 뒤 이 조건이 깨지면 rotation으로 국소적으로 모양을 고칩니다. Red-black tree는 색 규칙과 black-height 조건으로 height가 \(O(\log n)\)O(log n)을 넘지 않게 제한합니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

B-트리(B-tree)

B-트리(B-tree)

B-tree(B-Baum)는 한 node(Knoten)에 여러 sorted keys와 여러 child pointers를 넣어 height를 낮추는 balanced multiway search tree입니다. BST처럼 한 비교마다 왼쪽/오른쪽 둘 중 하나만 고르는 구조가 아니라, node 안 key들이 separator가 되어 여러 child interval 중 하나를 고릅니다. 강의의 핵심 동기는 block access입니다. disk/page/block 단위로 데이터를 읽는 상황에서는 node 하나를 조금 크게 읽더라도 내려가는 level 수를 줄이는 편이 유리합니다. 그래서 B-tree 답안은 항상 node capacity, child interval, equal leaf height, split-before-descent insertion, delete-before-descent repair를 함께 말해야 합니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

해싱·스킵 리스트·블룸 필터

Hashing, skip lists, Bloom filters

Hash table(Hashtabelle)은 key를 hash function h로 bucket index에 보내 exact dictionary operation을 빠르게 하려는 구조입니다. Skip list(Skip-Liste)는 정렬 linked list 위에 random shortcut levels를 쌓아 ordered search를 빠르게 합니다. Bloom filter(Bloom-Filter)는 실제 값을 저장하지 않고 bit array evidence만 저장하는 approximate membership filter입니다. 따라서 세 구조 모두 lookup과 관련 있지만 guarantee가 다릅니다: hash table은 exact storage, skip list는 ordered exact structure, Bloom filter는 memory-saving probabilistic filter입니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

문자열 매칭

String matching

String matching은 긴 text T 안에서 짧은 pattern P가 시작되는 모든 shift(Verschiebung)를 찾는 문제입니다. 핵심은 '문자열이 비슷해 보인다'가 아니라, 각 shift sft에 대해 모든 j에서 \(T[\text{sft}+j]=P[j]\)T[sft+j]=P[j]인지 확인하는 것입니다. Sheet07은 이 정의, NaiveStringMatching의 invariant와 Laufzeit, Rabin-Karp의 rolling hash와 false hit를 직접 다룹니다. Sheet09는 finite automaton(FSMMatching)에서 state st가 현재 shift가 아니라 지금까지 읽은 text suffix와 pattern prefix가 맞는 최대 길이라는 점을 묻습니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

그래프 순회: BFS, DFS, SCC

그래프 순회: BFS, DFS, SCC

이 장은 그래프(Graph)를 처음 보는 학생이 BFS, DFS, topological sort, SCC를 한 번에 연결해서 말할 수 있게 만드는 첫 강의입니다. 핵심은 하나입니다. 그래프에서는 '어디에서 어디로 갈 수 있는가(reachability)'를 묻고, BFS와 DFS는 그 질문을 서로 다른 순서로 탐색합니다. BFS는 가까운 층부터 queue로 넓게 보고, DFS는 recursion/stack으로 깊게 들어갔다가 되돌아옵니다. Topological sort는 DFS finish time을 DAG 위의 선후관계 순서로 바꾸는 응용이고, SCC는 directed graph에서 서로 왕복 가능한 정점들을 최대 묶음으로 압축하는 응용입니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

최소 신장 트리와 최단 경로

최소 신장 트리와 최단 경로

MST(minimum spanning tree, minimaler Spannbaum)와 shortest paths(kürzeste Wege)는 둘 다 weighted graph를 보지만 질문이 다릅니다. MST는 source 없이 모든 vertex를 하나의 tree로 연결하면서 total edge weight를 최소화합니다. Shortest path는 source s에서 각 vertex v까지의 path weight를 최소화합니다. 그래서 Kruskal과 Prim은 '어떤 edge를 골라 전체 연결망을 만들까?'를 묻고, Dijkstra와 Bellman-Ford는 's에서 v까지 지금 알려진 거리 dist[v]를 더 줄일 수 있을까?'를 묻습니다. 이 차이를 놓치면 MST를 shortest-path tree로 착각하거나, Prim의 key[v]와 Dijkstra의 dist[v]를 섞는 시험 함정에 바로 걸립니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

그리디·동적 계획법·환원

Greedy, dynamic programming, reductions

이 단원은 고급 알고리즘 설계 방법(Entwurfsmethoden)을 구분하는 법입니다. Greedy는 지금 보이는 가장 좋은 선택을 하나씩 붙이는 방식이지만, 그 선택이 안전하다(safe)고 증명해야 합니다. Dynamic programming(Dynamisches Programmieren, DP)은 같은 부분문제(overlapping subproblems)가 반복될 때 답을 표(table)나 메모(memoization)에 저장해 다시 쓰는 방식입니다. Reduction(Reduktion)은 문제 A의 입력을 문제 B의 입력으로 빠르게 바꾸고, B solver의 답을 A의 답으로 해석하는 문제 번역입니다. 시험에서는 이름을 외우는 것보다 각 방법의 의무를 말해야 합니다: Greedy는 안전성 증명, DP는 state/transition/runtime, reduction은 방향 \(A \le_{p} B\)A ≤p B와 결론입니다.

판별 순서: 정의의 전제조건을 확인하고, 절대 표현이 있으면 최소 반례를 찾은 뒤, 실행시간의 경우 최악·평균·상환 중 어느 기준인지 밝힙니다.

한국어 개념 강의 읽기

개념 강의

각 개념은 한국어 직관, 괄호 안의 독일어·영어 강의 용어, 읽기 좋은 수식, 객관식 함정, 능동 회상으로 구성됩니다. 기록이 쌓이면 우선순위와 설명 순서가 자동으로 바뀝니다.

알고리즘·자료구조·삽입 정렬·불변식

루프 불변식과 정확성 증명

Loop invariants and correctness

우선순위 65 구두 진단 학습 기록이 쌓이기 전의 기본 학습 경로
loop invariant / Schleifeninvarianteprecondition / Vorbedingungpostcondition / Nachbedingunginitialization / Induktionsanfang

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

Loop invariant(Schleifeninvariante)는 loop의 같은 시점에서 반복해서 참이어야 하는 상태 문장입니다. AUD에서는 보통 각 반복 직전의 상태를 잡고, Initialization, Maintenance/Fortsetzung, Termination/Terminierung 세 의무로 partial correctness를 보입니다. Vorlesung/01Introduction.pdf는 algorithm characteristic로 Korrektheit와 Terminierung을 구분하고, Sheet01은 insertion sort와 invariant proof를 연습시킵니다. 정렬 proof에서는 sorted만 말하면 약합니다. 원래 원소를 잃지 않았다는 permutation 또는 multiset preservation까지 같이 말해야 postcondition(Nachbedingung)이 됩니다.

비유: 책상 왼쪽 더미는 이미 날짜순으로 정리한 서류이고 오른쪽 더미는 아직 처리하지 않은 서류라고 생각하세요. 매번 오른쪽에서 하나를 집어 왼쪽 더미의 맞는 위치에 끼웁니다. invariant는 '새 서류를 넣기 직전 왼쪽 더미는 정렬되어 있고, 지금까지 집은 서류를 하나도 잃지 않았다'는 약속입니다.

반드시 알아야 할 것

  • Invariant는 언제 참인지 시점을 고정해서 씁니다. 이 페이지는 insertion sort outer loop의 각 반복 직전을 기준으로 둡니다.
  • Precondition(Vorbedingung)은 시작 전 입력 조건, postcondition(Nachbedingung)은 종료 후 결과 조건입니다.
  • Initialization/Induktionsanfang: 첫 반복 직전 invariant가 참임을 보입니다.
  • Maintenance/Fortsetzung/Induktionsschritt: I(j)와 guard true를 가정하고 loop body 뒤에 I(j+1)이 참임을 보입니다.
  • Termination/Terminierung: invariant와 guard false를 결합해 postcondition을 얻습니다.

AI에게 첨부할 파일

  • `Vorlesung\01Introduction.pdf`
  • `Übung\AuD26_Sheet01.pdf`
  • `Übung\AuD26_Sheet01-Sol.pdf`
  • `Übung\AuD26_Sheet01-GrpSol.pdf`
  • `data\aud_chunks.jsonl`
  • `data\aud_topic_map.md`
분할 정복·정렬·마스터 정리

점화식과 마스터 정리

Recurrences and Master theorem

우선순위 64 손풀이 연습 학습 기록이 쌓이기 전의 기본 학습 경로
\(T(n)=a\,T(n/b)+f(n)\)T(n)=aT(n/b)+f(n)\(a = \text{recursive} \text{subproblem} \text{count}\)a = recursive subproblem count\(b = \text{shrink} \text{factor}, b > 1\)b = shrink factor, b > 1\(f(n) = \text{non}-\text{recursive} \text{split}/\text{combine} \text{work}\)f(n) = non-recursive split/combine work

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

Recurrence(Rekurrenz)는 recursive algorithm의 실행 시간 T(n)을 더 작은 입력의 실행 시간으로 다시 쓰는 식입니다. Master theorem(Mastertheorem)은 \(T(n)=a\,T(n/b)+f(n)\)T(n)=aT(n/b)+f(n)꼴에서 recursion tree의 leaf 쪽 기준 \(n^{\log_{b} a}\)n^(log_b a)와 현재 level의 바깥 작업 f(n)을 비교해 tight bound를 빠르게 고르는 규칙입니다. 시험에서는 case 번호를 외우기보다 pseudocode에서 a, b, f(n)을 읽고, baseline을 계산하고, f(n)과 baseline 사이에 polynomial gap이 있는지 말해야 합니다.

비유: 큰 보고서를 반으로 나눠 두 팀에게 맡긴 뒤 마지막에 한 번 훑으며 합치는 상황을 떠올리면 됩니다. 팀 수가 a, 각 팀에게 가는 보고서 크기 감소가 b, 마지막에 합치는 비용이 f(n)입니다. 일이 위쪽 level에서 많이 드는지, 아래쪽 leaf가 너무 많아지는지, 모든 level이 비슷한지가 Master theorem의 세 case입니다.

반드시 알아야 할 것

  • 표준형은 \(T(n)=a\,T(n/b)+f(n)\)T(n)=aT(n/b)+f(n)입니다. \(a\ge 1, b>1\)a≥1, b>1이고 기본 조건이 \(T(1)=\Theta(1)\)T(1)=Θ(1)인 분할 정복 점화식에 적용합니다.
  • a는 재귀 호출(recursive call)의 개수이고, b는 각 호출의 입력이 n/b로 줄어드는 비율입니다. T(n/2)에서는 \(b=2\)b=2입니다.
  • f(n)은 재귀 호출 밖에서 하는 분할·병합·조합·분할 위치 결정 비용입니다. 전체 시간 T(n)과 혼동하면 안 됩니다.
  • 기준선 \(n^{\log_{b} a}\)n^(log_b a)는 재귀 트리의 리프 개수, 즉 분기가 퍼지는 힘을 나타냅니다. 항상 이 값을 먼저 계산한 뒤 f(n)과 비교합니다.
  • 경우 1(리프 지배): \(f(n)=O(n^{\log_{b} a-\varepsilon})\)f(n)=O(n^(log_b a-epsilon))이면 \(T(n)=\Theta(n^{\log_{b} a})\)T(n)=Θ(n^(log_b a))입니다.

AI에게 첨부할 파일

  • `Übung\AuD26_Sheet03.pdf`
  • `Übung\AuD26_Sheet03-GrpSol.pdf`
  • `Vorlesung\02Sorting.pdf`
  • `Vorlesung\02Sorting_updated.pdf`
  • `AuD Gedächtnisprotokoll SoSe 2025.md`
정렬·점근 분석·분할 정복

정렬과 비교 기반 하한

Sorting and lower bounds

우선순위 64 객관식 함정 훈련 학습 기록이 쌓이기 전의 기본 학습 경로
정렬(sorting / Sortieren)키(key / Schluesselwert)부가 데이터(satellite data / Satellitendaten)전순서(total order / totale Ordnung)

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

정렬(sorting, Sortieren)은 단순히 숫자를 예쁘게 나열하는 문제가 아니라, 알고리즘이 입력에 대해 어떤 정보를 얻을 수 있는지 묻는 모델 문제입니다. 비교 기반 정렬(comparison-based sorting)은 두 원소를 비교한 yes/no 결과만으로 순서를 알아냅니다. 그래서 한 번의 비교는 가능한 세계를 최대 두 갈래로만 줄입니다. 서로 다른 n개 key의 가능한 입력 순열은 n!개이므로, 올바른 비교 기반 정렬은 worst case에서 그 많은 경우를 구분할 만큼의 비교를 해야 합니다. 그 결론이 \(m \ge \log_{2}(n!) = \Omega(n \log n)\)m ≥ log2(n!) = Ω(n log n)입니다. 이 문장은 RadixSort나 CountingSort처럼 digit, bucket, key range를 직접 쓰는 알고리즘에는 그대로 적용되지 않습니다.

비유: 어두운 방에서 카드 두 장씩만 만져 보고 어느 쪽이 작은지 묻는 게임을 생각하세요. 질문 하나는 yes/no 두 갈래만 줍니다. 반대로 카드 뒷면의 digit 색깔을 바로 볼 수 있다면 bucket으로 나누는 다른 게임이 됩니다. lower bound가 깨진 것이 아니라 게임 규칙이 바뀐 것입니다.

반드시 알아야 할 것

  • 정렬 문제는 객체들을 지정된 key(Schluesselwert)의 total order에 맞게 재배열하는 문제입니다.
  • satellite data가 있으면 같은 key를 가진 객체들의 상대 순서가 의미를 가질 수 있고, 이때 stable(stabil)이 중요합니다.
  • comparison-based sorting은 순서 정보를 \(A[i] \le A[j]\)A[i] ≤ A[j]같은 비교 결과로만 얻는 모델입니다.
  • decision tree에서 internal node는 비교 질문, edge는 yes/no 결과, leaf는 구분된 입력 순열 또는 최종 출력 경우입니다.
  • m번 비교하면 가능한 answer sequence 또는 leaf 수는 최대 \(2^{m}\)2ᵐ개입니다.

AI에게 첨부할 파일

  • `Vorlesung\02Sorting.pdf`
  • `Vorlesung\02Sorting_updated.pdf`
  • `Vorlesung\02aSorting.pdf`
  • `Übung\AuD26_Sheet03.pdf`
  • `Übung\AuD26_Sheet03-GrpSol.pdf`
  • `Übung\AuD26_Sheet04.pdf`
B-트리·해시 테이블·스킵 리스트·블룸 필터

해싱·스킵 리스트·블룸 필터

Hashing, skip lists, Bloom filters

우선순위 61 객관식 함정 훈련 학습 기록이 쌓이기 전의 기본 학습 경로
\(해시 테이블(\text{Hash} \text{table}): h: U \rightarrow \{0,...,m-1\}\)해시 테이블(Hash table): h: U → {0,...,m-1}\(적재율(\text{load} \text{factor}): \text{alpha} = n / m\)적재율(load factor): alpha = n / m\(체이닝(\text{chaining}): 기대 버킷 길이 = \text{alpha}\)체이닝(chaining): 기대 버킷 길이 = alpha\(스킵 리스트(\text{skip} \text{list}): E[|L_{i}|] = p^{i} n\)스킵 리스트(skip list): E[|Lᵢ|] = p^i n

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

Hash table(Hashtabelle)은 key를 hash function h로 bucket index에 보내 exact dictionary operation을 빠르게 하려는 구조입니다. Skip list(Skip-Liste)는 정렬 linked list 위에 random shortcut levels를 쌓아 ordered search를 빠르게 합니다. Bloom filter(Bloom-Filter)는 실제 값을 저장하지 않고 bit array evidence만 저장하는 approximate membership filter입니다. 따라서 세 구조 모두 lookup과 관련 있지만 guarantee가 다릅니다: hash table은 exact storage, skip list는 ordered exact structure, Bloom filter는 memory-saving probabilistic filter입니다.

비유: Hash table은 이름표를 보고 사물함 번호를 계산하는 접수대입니다. Skip list는 모든 집이 있는 일반 도로 위에 일부 주소만 지나는 고속도로 층을 얹은 지도입니다. Bloom filter는 입구에서 '명단에 절대 없음'만 빠르게 걸러내는 스탬프 검사입니다. 스탬프가 맞아도 실제 명단 확인은 아직 필요할 수 있습니다.

반드시 알아야 할 것

  • Definition: Hash table은 h(key)로 bucket T[h(key)]를 고르고, collision(Kollision)은 chaining(Verkettung) 또는 open addressing(offene Adressierung)으로 처리합니다.
  • Invariant: 같은 key는 같은 hash value를 계산해야 하며, collision handling은 search가 insert 때 놓인 위치를 다시 따라갈 수 있게 유지되어야 합니다.
  • Laufzeit: good uniform hashing과 \(\text{controlled} \text{load} \text{factor} \text{alpha} = n/m\)controlled load factor alpha = n/m아래 search/insert/delete는 average 또는 expected \(O(1)\)O(1)입니다. 최악에는 한 bucket/probe sequence에 몰려 \(O(n)\)O(n)이 됩니다.
  • Definition: Skip list는 bottom level에 모든 key가 sorted order로 있고, 각 key가 probability p로 위 level에 promoted되는 tower 구조입니다.
  • Invariant: 각 level은 sorted linked list이고, 위 level의 node는 아래 level에도 존재합니다. Search는 top-left에서 next key가 target 이하이면 right, 아니면 down으로 갑니다.

AI에게 첨부할 파일

  • `Vorlesung\05RandomizedDataStructures-wi.pdf`
  • `Übung\AuD26_Sheet08.pdf`
  • `Übung\AuD26_Sheet08-Sol.pdf`
문자열 매칭

문자열 매칭

String matching

우선순위 60 손풀이 연습 학습 기록이 쌓이기 전의 기본 학습 경로
String matching / Zeichenkettenmuster-Suche: text T 안의 pattern P occurrence 찾기\(T: 검색 대상 텍스트 배열(\text{text} \text{array}), |T| = n\)T: 검색 대상 텍스트 배열(text array), |T| = n\(P: 찾을 패턴\cdot \text{Muster} 배열, |P| = m, m \le n\)P: 찾을 패턴·Muster 배열, |P| = m, m ≤ nSigma: 유한 알파벳(finite alphabet / endliches Alphabet)

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

String matching은 긴 text T 안에서 짧은 pattern P가 시작되는 모든 shift(Verschiebung)를 찾는 문제입니다. 핵심은 '문자열이 비슷해 보인다'가 아니라, 각 shift sft에 대해 모든 j에서 \(T[\text{sft}+j]=P[j]\)T[sft+j]=P[j]인지 확인하는 것입니다. Sheet07은 이 정의, NaiveStringMatching의 invariant와 Laufzeit, Rabin-Karp의 rolling hash와 false hit를 직접 다룹니다. Sheet09는 finite automaton(FSMMatching)에서 state st가 현재 shift가 아니라 지금까지 읽은 text suffix와 pattern prefix가 맞는 최대 길이라는 점을 묻습니다.

비유: 긴 책에서 단어를 찾는다고 생각하면 됩니다. naive 방식은 책의 모든 가능한 시작 위치에 자를 대고 단어 전체가 맞는지 확인합니다. Rabin-Karp는 각 window에 빠른 숫자 도장을 찍어 대부분을 빨리 제외하지만, 도장이 같아도 실제 글자가 같다는 보장은 없어 다시 확인합니다. FSM/KMP 계열은 '방금 읽은 끝부분이 pattern의 앞부분과 얼마나 이어지는가'를 기억해서 실패 후 처음부터 완전히 다시 보지 않습니다.

반드시 알아야 할 것

  • String-Matching-Problem의 답은 첫 occurrence가 아니라 모든 valid shifts의 list L입니다.
  • Text는 T, pattern/Muster는 P, 길이는 \(n=|T|, m=|P|\)n=|T|, m=|P|로 둡니다.
  • 가능한 shift는 \(0 \le \text{sft} \le n-m\)0 ≤ sft ≤ n-m입니다. n-1까지 돌리면 pattern이 text 밖으로 나갑니다.
  • sft가 valid라는 말은 모든 \(0 \le j < m\)0 ≤ j < m에 대해 \(T[\text{sft}+j] = P[j]\)T[sft+j] = P[j]라는 뜻입니다.
  • NaiveStringMatching은 각 shift마다 pattern 전체를 비교하므로 worst-case \(O((n-m+1)m)\)O((n-m+1)m)입니다.

AI에게 첨부할 파일

  • `Übung\AuD26_Sheet07.pdf`
  • `Übung\AuD26_Sheet07-GrpSol.pdf`
  • `Übung\AuD26_Sheet09.pdf`
  • `Übung\AuD26_Sheet09-GrpSol.pdf`
  • `data\aud_chunks.jsonl`
고급 알고리즘 설계 기법

그리디·동적 계획법·환원

Greedy, dynamic programming, reductions

우선순위 58 구두 진단 학습 기록이 쌓이기 전의 기본 학습 경로
알고리즘 설계 방법(Entwurfsmethoden): 탐욕법(Greedy), 동적 계획법(Dynamisches Programmieren), 환원(Reduktion)탐욕 선택 속성(greedy-choice property)\(교환 논증(\text{exchange} \text{argument}): O' = O - e + g\)교환 논증(exchange argument): O' = O - e + g\(\text{Dijkstra} 전제조건: w(e) \ge 0\)Dijkstra 전제조건: w(e) ≥ 0

AUD 주제 고정 우선순위에 따른 기본 추천; 아직 퀴즈 기록 없음

개인 맞춤 설명 순서
  1. 1. 정의를 쉬운 한국어로 다시 설명한 뒤 독일어·영어 원어를 괄호에 붙입니다.
  2. 2. 전체 알고리즘을 읽기 전에 아주 작은 예제를 손으로 한 번 추적합니다.
  3. 3. 불변식, 전제 조건 또는 증명해야 할 내용을 소리 내어 말합니다.
  4. 4. 실행시간 모델, 최악·기대 경우, 숨어 있는 가정을 서로 구분합니다.
핵심 내용 미리 보기

이 단원은 고급 알고리즘 설계 방법(Entwurfsmethoden)을 구분하는 법입니다. Greedy는 지금 보이는 가장 좋은 선택을 하나씩 붙이는 방식이지만, 그 선택이 안전하다(safe)고 증명해야 합니다. Dynamic programming(Dynamisches Programmieren, DP)은 같은 부분문제(overlapping subproblems)가 반복될 때 답을 표(table)나 메모(memoization)에 저장해 다시 쓰는 방식입니다. Reduction(Reduktion)은 문제 A의 입력을 문제 B의 입력으로 빠르게 바꾸고, B solver의 답을 A의 답으로 해석하는 문제 번역입니다. 시험에서는 이름을 외우는 것보다 각 방법의 의무를 말해야 합니다: Greedy는 안전성 증명, DP는 state/transition/runtime, reduction은 방향 \(A \le_{p} B\)A ≤p B와 결론입니다.

비유: Greedy는 등산 중 매 순간 가장 가파르게 올라가는 길을 고르는 전략과 비슷합니다. 빨라 보이지만 그 길이 정상으로 이어진다는 보증이 없으면 함정에 빠질 수 있습니다. DP는 여러 요리에 반복해서 쓰는 기본 소스를 한 번 만들어 냉장고에 넣어 두고 다시 쓰는 것과 같습니다. Reduction은 내가 모르는 문제를 이미 풀 줄 아는 문제의 언어로 번역해서 해결하는 통역 작업입니다.

반드시 알아야 할 것

  • Lecture 07 page 3는 Divide & Conquer, Backtracking, Dynamisches Programmieren, Greedy, Metaheuristiken을 algorithmic design methods로 나눕니다.
  • Greedy는 local optimum을 고르는 행위 자체가 아니라, local choice가 safe하다는 greedy-choice property 또는 exchange argument까지 포함하는 설계법입니다.
  • Exchange argument의 틀: greedy choice g가 없는 optimal solution O를 잡고, 어떤 e를 빼고 g를 넣은 O' = O - e + g가 feasible이고 cost(O') <= cost(O)임을 보입니다.
  • Dijkstra는 Greedy처럼 extract-min을 확정하지만, Lecture 07 pages 73-75의 negative-edge counterexample처럼 \(w(e) \ge 0\)w(e) ≥ 0조건이 없으면 깨집니다.
  • Prim/Kruskal은 MST에서 cut, light edge, safe edge 아이디어로 greedy 선택을 정당화합니다. 이 근거는 GraphAlgorithms lecture의 MST 부분에서 나옵니다.

AI에게 첨부할 파일

  • `Vorlesung\07AdvancedDesigns.pdf`
  • `Vorlesung\06GraphAlgorithms.pdf`
  • `Vorlesung\06GraphAlgorithms__moodle_2026-06-16.pdf`
  • `AuD Gedächtnisprotokoll SoSe 2025.md`
  • `data\aud_chunks.jsonl`
연결 리스트·트리·순회·이진 탐색 트리

이진 탐색 트리와 순회(BSTs and traversals)

이진 탐색 트리와 순회(BSTs and traversals)

우선순위 - 개념 학습 기본 학습 경로
트리(tree/Baum), 노드(node/Knoten), 간선(edge/Kante), 루트(root/Wurzel)부모(parent/Elternknoten), 자식(child/Kind), 형제(sibling/Geschwister)잎(leaf/Blatt), 내부 노드(inner node/innerer Knoten), 부분 트리(subtree/Teilbaum)조상(ancestor/Vorfahre), 자손(descendant/Nachkomme)

AUD 시험의 핵심 개념

핵심 내용 미리 보기

오프닝: BST(Binary Search Tree, binärer Suchbaum)는 '정렬된 숫자 그림'이 아니라, 한 번 비교할 때마다 한쪽 subtree(Teilbaum) 전체를 버리게 해 주는 약속입니다. 예를 들어 70을 찾는데 root가 50이면 50 이하가 모인 왼쪽은 볼 필요가 없습니다. 오른쪽으로 가서 80을 만나면 이번에는 80보다 큰 쪽을 버리고 왼쪽으로 갑니다. 그래서 좋은 BST에서는 search가 빠르지만, tree가 한 줄 chain처럼 망가지면 linked list처럼 느려집니다. 선수 지식: tree(Baum)는 node(Knoten)들이 parent-child 관계로 연결된 구조입니다. 시작점은 root(Wurzel), child가 없는 node는 leaf(Blatt), 어떤 node 아래에 매달린 전체 부분은 subtree(Teilbaum)입니다. depth(Tiefe)는 root에서 현재 node까지 내려간 거리이고, height(Höhe)는 현재 node 또는 tree에서 가장 깊은 leaf까지 내려가는 최대 거리입니다. Lecture 03은 empty tree의 height를 -1로 둡니다. Binary tree(binärer Baum)는 각 node가 left child와 right child를 각각 최대 하나씩 가지는 tree입니다. 1단계 핵심 정의: BST는 binary tree에 ordering invariant를 붙인 것입니다. 이 페이지에서는 Sheet05 삽입 예시와 맞추어 모든 node v에 대해 left subtree의 모든 \(\text{key} \le v.\text{key} < \text{right} \text{subtree}\)key ≤ v.key < right subtree의 모든 key 라는 duplicate convention을 씁니다. 단, Lecture 03의 일반 표기는 오른쪽 subtree에 >=를 허용하는 형태이므로, 시험에서는 duplicate가 어느 쪽으로 가는 convention인지 먼저 말해야 합니다. 중요한 말은 subtree-wide입니다. 바로 왼쪽 child 하나만 작다고 충분한 것이 아니라, 왼쪽 subtree 안의 모든 descendant가 ancestor가 만든 upper bound를 지켜야 합니다. 2단계 search mental model: BST search는 root에서 시작해서 key를 비교하고 딱 한 방향만 고릅니다. \(k \le \text{current}.\text{key}\)k ≤ current.key이면 왼쪽, \(k > \text{current}.\text{key}\)k > current.key이면 오른쪽으로 갑니다. 반대쪽 subtree 전체는 후보에서 사라집니다. 그래서 search path는 한 줄입니다. 하지만 Sheet05 G5 같은 path 검증 문제에서는 바로 이전 node만 보지 말고, root부터 내려오며 생긴 lower bound와 upper bound를 계속 들고 가야 합니다. 오른쪽으로 내려가면 lower bound가 올라가고, 왼쪽으로 내려가면 upper bound가 내려갑니다. 3단계 traversal mental model: traversal(Traversierung)은 tree 모양을 바꾸는 연산이 아니라, 같은 tree를 어떤 순서로 읽을지 정하는 규칙입니다. Preorder는 root-left-right라서 root first, inorder는 left-root-right라서 root middle, postorder는 left-right-root라서 root last입니다. BST에서 inorder가 sorted order를 주는 이유는 traversal 규칙 하나 때문이 아니라 BST invariant와 결합되기 때문입니다. Lecture 03은 서로 다른 binary tree가 같은 inorder 또는 preorder를 가질 수 있음을 보여 주므로, traversal 하나만으로 shape를 항상 복원할 수 있다고 말하면 안 됩니다. 4단계 update 연산: insert는 실패한 search가 nil에 도착한 자리에 새 node를 붙입니다. delete는 leaf 삭제, one-child bypass, two-child replacement로 나눕니다. 두 child가 있으면 아무 leaf나 올리는 것이 아니라 \(\text{successor} = \min(\text{right} \text{subtree})\)successor = min(right subtree)또는 \(\text{predecessor} = \max(\text{left} \text{subtree})\)predecessor = max(left subtree)를 써서 BST invariant를 보존합니다. Sheet05 G4(c)는 15, 70, 80 삭제를 통해 이 case 구분을 연습시킵니다. 5단계 runtime: traversal은 모든 node를 한 번씩 방문하므로 \(\Theta(n)\)Θ(n)입니다. BST search, insert, delete는 한 root-to-leaf path를 따라가므로 \(O(h)\)O(h)입니다. h가 \(\Theta(\log n)\)Θ(log n)이면 \(O(\log n)\)O(log n)이지만, plain BST는 자동으로 balanced가 아닙니다. 정렬된 입력을 계속 넣으면 \(h = \Theta(n)\)h = Θ(n)이 되어 search/insert/delete가 \(O(n)\)O(n)이 될 수 있습니다. Sheet05 G6(b)의 BST-sort best case \(O(n \log n)\)O(n log n)\(\text{worst} \text{case} \Theta(n^{2})\)worst case Θ(n²)는 이 height 차이에서 나옵니다.

비유: BST는 번호표가 정리된 캐비닛입니다. 기준 칸보다 작거나 같은 번호는 왼쪽 묶음, 큰 번호는 오른쪽 묶음에만 있다고 약속합니다. 찾는 번호가 기준보다 크면 왼쪽 캐비닛 전체를 닫아 버립니다. Traversal은 캐비닛을 다시 정리하는 일이 아니라, 같은 캐비닛을 '기준부터 읽기', '왼쪽-기준-오른쪽으로 읽기', '기준을 마지막에 읽기' 중 어떤 독서 순서로 훑을지 정하는 일입니다.

반드시 알아야 할 것

  • Tree vocabulary를 그림에서 바로 말할 수 있어야 합니다: root(Wurzel), node(Knoten), edge(Kante), parent, child, sibling, leaf(Blatt), inner node, ancestor(Vorfahre), descendant(Nachkomme), subtree(Teilbaum).
  • Depth(Tiefe)는 root에서 node까지 내려간 거리이고, height(Höhe)는 node/tree에서 가장 깊은 leaf까지의 최대 거리입니다. Lecture 03 convention: \(\text{empty} \text{tree} \text{height} = -1.\)empty tree height = -1.
  • Binary tree는 left/right child slot이 있는 tree입니다. 같은 연결이라도 left와 right가 바뀌면 다른 binary tree이고 traversal 결과도 바뀔 수 있습니다.
  • BST invariant는 subtree-wide입니다. 이 페이지의 convention은 \(\text{left} \text{subtree} \text{keys} \le v.\text{key} < \text{right} \text{subtree} \text{keys}\)left subtree keys ≤ v.key < right subtree keys입니다.
  • Lecture 03은 오른쪽 subtree에 >=를 허용하는 방식으로 설명하므로 duplicate convention은 문제 statement에 맞추어 확인해야 합니다.

AI에게 첨부할 파일

  • `Vorlesung\03BasicDataStructures.pdf`
  • `Übung\AuD26_Sheet05.pdf`
  • `Übung\AuD26_Sheet05-Sol.pdf`
  • `Übung\AuD26_Sheet05-GrpSol.pdf`
점근 표기와 실행 시간 분석

점근 표기(Asymptotic notation)

점근 표기(Asymptotic notation)

우선순위 - 개념 학습 기본 학습 경로
\(O(g): 상한(\text{upper} \text{bound} / \text{obere} \text{Schranke})\)O(g): 상한(upper bound / obere Schranke)\(\Omega(g): 하한(\text{lower} \text{bound} / \text{untere} \text{Schranke})\)Ω(g): 하한(lower bound / untere Schranke)\(\Theta(g): 긴밀한 경계(\text{tight} \text{bound} / \text{scharfe} \text{Schranke})\)Θ(g): 긴밀한 경계(tight bound / scharfe Schranke)o(g): 엄격하게 더 느린 성장(strictly smaller growth)

AUD 시험의 핵심 개념

핵심 내용 미리 보기

Asymptotic notation(Landau-Notation)은 실제 초 단위 시간이 아니라 입력 크기 n이 충분히 커졌을 때 Laufzeit이 어떤 성장급(Wachstumsklasse)에 속하는지 말하는 언어입니다. 작은 n에서의 우연한 교차, 상수배, 낮은 차수항을 버리고 dominant term을 찾은 뒤, O, Omega, Theta, o 중 문제의 방향에 맞는 가장 제한적인 표기(restriktivste Notation)를 고르는 것이 핵심입니다. Sheet02와 2025 기억 프로토콜은 함수 단순화, 부등식으로 주어진 upper/lower bound, 그리고 중첩 루프의 \(\Theta(n \log n)\)Θ(n log n) 함정을 반복해서 묻습니다.

비유: 두 달리기 선수가 출발 직후에는 서로 앞서거니 뒤서거니 할 수 있습니다. 하지만 10km, 100km처럼 거리가 커질수록 한쪽의 최고 속도 차이가 결과를 지배합니다. Asymptotic notation도 초반의 출발 자세가 아니라 장거리에서 누가 결국 지배하는지 보는 도구입니다.

반드시 알아야 할 것

  • \(O(g)\)O(g)는 충분히 큰 n 이후 f가 c*g 아래에 머문다는 upper bound(obere Schranke)입니다.
  • \(\Omega(g)\)Ω(g)는 충분히 큰 n 이후 f가 c*g 이상이라는 lower bound(untere Schranke)입니다.
  • \(\Theta(g)\)Θ(g)\(O(g)\)O(g)\(\Omega(g)\)Ω(g)가 동시에 성립하는 tight bound(scharfe Schranke)입니다.
  • little-o o(g)는 \(f(n)/g(n) \rightarrow 0,\)f(n)/g(n) → 0,즉 f가 g보다 엄격하게 작은 성장급이라는 뜻입니다.
  • 상수배와 낮은 차수항은 asymptotic class를 바꾸지 않지만, dominant term은 반드시 남겨야 합니다.

AI에게 첨부할 파일

  • `Übung\AuD26_Sheet02.pdf`
  • `Übung\AuD26_Sheet02-Sol.pdf`
  • `Vorlesung\02Sorting.pdf`
  • `Vorlesung\02Sorting_updated.pdf`
  • `Vorlesung\02aSorting.pdf`
  • `AuD Gedächtnisprotokoll SoSe 2025.md`
균형 탐색 트리(Balanced search trees)

AVL 트리와 레드-블랙 트리

AVL 트리와 레드-블랙 트리

우선순위 - 개념 학습 기본 학습 경로
AVL 트리: 높이 균형 이진 탐색 트리(height-balanced BST)\(균형 인수(\text{balance} \text{factor}): \text{BF}(v)=\text{height}(\text{left}(v))-\text{height}(\text{right}(v))\)균형 인수(balance factor): BF(v)=height(left(v))-height(right(v))\(\text{AVL} 조건: \text{BF}(v) \in \{-1,0,1\}\)AVL 조건: BF(v) ∈ {-1,0,1}회전(rotation): 중위 순서를 보존하는 국소 구조 변경

AUD 시험의 핵심 개념

핵심 내용 미리 보기

AVL tree와 red-black tree는 plain BST가 한 줄짜리 chain으로 망가지는 문제를 막는 balanced search tree입니다. 둘 다 먼저 BST order invariant를 만족해야 하고, 그 위에 height를 작게 유지하는 balance invariant를 추가합니다. AVL은 각 node의 왼쪽과 오른쪽 subtree 높이 차이를 최대 1로 제한합니다. 삽입이나 삭제 뒤 이 조건이 깨지면 rotation으로 국소적으로 모양을 고칩니다. Red-black tree는 색 규칙과 black-height 조건으로 height가 \(O(\log n)\)O(log n)을 넘지 않게 제한합니다.

비유: BST order는 책장을 가나다순으로 꽂는 규칙이고, balance invariant는 책장이 한쪽으로만 길어지지 않게 받침대를 조정하는 규칙입니다. AVL은 높이를 꼼꼼히 맞추는 방식이고, red-black tree는 색 규칙으로 전체 높이를 제한하는 방식입니다.

반드시 알아야 할 것

  • AVL과 red-black tree는 모두 BST입니다. subtree-wide order invariant가 먼저입니다.
  • AVL balance factor는 보통 height(left)-height(right)입니다. 허용값은 -1, 0, 1입니다.
  • AVL insertion 후 처음 imbalance가 생긴 node에서 LL, RR, LR, RL case를 고릅니다.
  • LL과 RR은 single rotation, LR과 RL은 double rotation입니다.
  • Rotation은 inorder traversal 순서를 보존하므로 BST order도 보존됩니다.

AI에게 첨부할 파일

  • `Vorlesung\03BasicDataStructures.pdf`
  • `Übung\AuD26_Sheet05.pdf`
  • `Übung\AuD26_Sheet05-Sol.pdf`
  • `Übung\AuD26_Sheet05-GrpSol.pdf`
B-트리, 해시 테이블, 스킵 리스트, 블룸 필터

B-트리(B-tree)

B-트리(B-tree)

우선순위 - 개념 학습 기본 학습 경로
B-트리(B-Baum, B-tree): 균형 다방향 검색 트리최소 차수 t(Grad t, minimum degree t)\(루트가 아닌 노드: t-1 \le x.n \le 2t-1개의 키\)루트가 아닌 노드: t-1 ≤ x.n ≤ 2t-1개의 키\(루트 예외: 트리가 비어 있지 않으면 1 \le \text{루트}.n \le 2t-1\)루트 예외: 트리가 비어 있지 않으면 1 ≤ root.n ≤ 2t-1

AUD 시험의 핵심 개념

핵심 내용 미리 보기

B-tree(B-Baum)는 한 node(Knoten)에 여러 sorted keys와 여러 child pointers를 넣어 height를 낮추는 balanced multiway search tree입니다. BST처럼 한 비교마다 왼쪽/오른쪽 둘 중 하나만 고르는 구조가 아니라, node 안 key들이 separator가 되어 여러 child interval 중 하나를 고릅니다. 강의의 핵심 동기는 block access입니다. disk/page/block 단위로 데이터를 읽는 상황에서는 node 하나를 조금 크게 읽더라도 내려가는 level 수를 줄이는 편이 유리합니다. 그래서 B-tree 답안은 항상 node capacity, child interval, equal leaf height, split-before-descent insertion, delete-before-descent repair를 함께 말해야 합니다.

비유: BST가 안내판 하나에 기준 숫자 하나만 적어 두는 건물이라면, B-tree는 안내판 하나에 여러 기준 숫자를 적어 여러 복도로 보내는 도서관 색인입니다. 안내판 하나를 읽는 데는 비교가 조금 더 들지만, 층수가 크게 줄어 멀리 있는 책도 몇 번 안 내려가고 찾습니다.

반드시 알아야 할 것

  • B-tree(B-Baum)는 binary tree가 아니라 multiway search tree입니다.
  • Grad t(minimum degree t)에서 non-root node는 t-1..2t-1 keys를 가집니다.
  • Root(Wurzel)는 예외입니다. 비어 있지 않은 tree의 root는 1..2t-1 keys를 가질 수 있습니다.
  • Internal node with m keys has m+1 children입니다.
  • Child interval rule은 parent key 바로 옆 child만이 아니라 subtree 전체에 적용됩니다.

AI에게 첨부할 파일

  • `Vorlesung\04AdvancedDataStructures.pdf`
  • `Übung\AuD26_Sheet08.pdf`
  • `Übung\AuD26_Sheet08-Sol.pdf`
그래프 표현, BFS, DFS, 위상 정렬, 강한 연결 요소

그래프 순회: BFS, DFS, SCC

그래프 순회: BFS, DFS, SCC

우선순위 - 개념 학습 기본 학습 경로
\(G=(V,E)\)G=(V,E)정점(vertex, Knoten), 간선(edge, Kante)경로(path, Pfad), 도달 가능(reachable, erreichbar)인접 행렬(Adjazenzmatrix)과 인접 리스트(Adjazenzliste)

AUD 시험의 핵심 개념

핵심 내용 미리 보기

이 장은 그래프(Graph)를 처음 보는 학생이 BFS, DFS, topological sort, SCC를 한 번에 연결해서 말할 수 있게 만드는 첫 강의입니다. 핵심은 하나입니다. 그래프에서는 '어디에서 어디로 갈 수 있는가(reachability)'를 묻고, BFS와 DFS는 그 질문을 서로 다른 순서로 탐색합니다. BFS는 가까운 층부터 queue로 넓게 보고, DFS는 recursion/stack으로 깊게 들어갔다가 되돌아옵니다. Topological sort는 DFS finish time을 DAG 위의 선후관계 순서로 바꾸는 응용이고, SCC는 directed graph에서 서로 왕복 가능한 정점들을 최대 묶음으로 압축하는 응용입니다.

비유: BFS는 지하철 역에서 환승 횟수 0, 1, 2, 3 순서로 퍼지는 느낌입니다. DFS는 미로에서 한 길을 끝까지 가 본 뒤 막히면 직전 갈림길로 돌아오는 느낌입니다. Topological sort는 요리 순서표처럼 '반죽이 먼저, 굽기가 나중'이라는 dependency를 한 줄로 세우는 일입니다. SCC는 directed road map에서 서로 오갈 수 있는 동네를 하나의 구역으로 묶는 일입니다.

반드시 알아야 할 것

  • Directed graph는 \(G=(V,E), E \subseteq V x V\)G=(V,E), E subseteq V x V로 모델링하며 (u,v)는 u에서 v로 가는 방향 edge입니다.
  • Path/Pfad와 reachability/Erreichbarkeit는 BFS, DFS, SCC의 공통 언어입니다.
  • Adjacency matrix는 \(\Theta(|V|^2)\)Θ(|V|²) space, adjacency list는 \(\Theta(|V|+|E|)\)Θ(|V|+|E|) space가 기본입니다.
  • BFS는 queue(FIFO), color, dist, pred를 사용하고 unweighted graph에서 shortest edge count를 계산합니다.
  • DFS는 discovery/finish time을 찍고 interval containment로 ancestor 관계를 읽습니다.

AI에게 첨부할 파일

  • `Vorlesung\06GraphAlgorithms.pdf`
  • `Vorlesung\06GraphAlgorithms__moodle_2026-06-16.pdf`
  • `Übung\AuD26_Sheet09.pdf`
  • `Übung\AuD26_Sheet09-GrpSol.pdf`
  • `data\aud_chunks.jsonl`
  • `data\aud_topic_map.md`
최소 신장 트리(MST), Prim, Kruskal, 최단 경로, Bellman-Ford

최소 신장 트리와 최단 경로

최소 신장 트리와 최단 경로

우선순위 - 개념 학습 기본 학습 경로
\(가중 그래프(\text{gewichteter} \text{Graph}): G=(V,E), w:E\rightarrow R\)가중 그래프(gewichteter Graph): G=(V,E), w:E→R최소 신장 트리(MST, minimum spanning tree, minimaler Spannbaum)\(신장 트리: 모든 정점 포함, 연결, 무순환, |E_{T}|=|V|-1\)신장 트리: 모든 정점 포함, 연결, 무순환, |Eₜ|=|V|-1절단(cut), 가벼운 간선(light edge), 안전한 간선(safe edge)

AUD 시험의 핵심 개념

핵심 내용 미리 보기

MST(minimum spanning tree, minimaler Spannbaum)와 shortest paths(kürzeste Wege)는 둘 다 weighted graph를 보지만 질문이 다릅니다. MST는 source 없이 모든 vertex를 하나의 tree로 연결하면서 total edge weight를 최소화합니다. Shortest path는 source s에서 각 vertex v까지의 path weight를 최소화합니다. 그래서 Kruskal과 Prim은 '어떤 edge를 골라 전체 연결망을 만들까?'를 묻고, Dijkstra와 Bellman-Ford는 's에서 v까지 지금 알려진 거리 dist[v]를 더 줄일 수 있을까?'를 묻습니다. 이 차이를 놓치면 MST를 shortest-path tree로 착각하거나, Prim의 key[v]와 Dijkstra의 dist[v]를 섞는 시험 함정에 바로 걸립니다.

비유: MST는 여러 도시를 모두 인터넷 케이블로 연결하는 공사 계획입니다. 어느 도시에서 출발했는지는 중요하지 않고, 전체 케이블 비용이 최소이면 됩니다. Shortest path는 내비게이션입니다. 출발점 s가 있고, s에서 특정 목적지까지 가장 싼 경로가 중요합니다. 케이블망은 전체 예산을 아끼고, 내비게이션은 한 출발점에서의 이동 비용을 아낍니다.

반드시 알아야 할 것

  • 강의에서 최소 신장 트리(MST)는 연결된 무방향 가중 그래프에 대해 정의됩니다. \(T=(V,E_{T})\)T=(V,Eₜ)는 모든 정점을 포함하고 순환이 없으며 \(w(T)=\sum_{e\in E_{T}}w(e)\)w(T)=Σ[e ∈ Eₜ]w(e)를 최소화합니다.
  • 정점이 |V|개인 신장 트리는 간선이 정확히 |V|-1개입니다. 같은 연결 성분 안에 간선을 하나 더 넣으면 순환이 생깁니다.
  • 일반 MST 알고리즘은 안전한 간선(safe edge)만 추가해 집합 A를 키우며, A가 어떤 MST의 부분집합이라는 불변식으로 정확성을 보입니다.
  • 절단 속성(cut property): A를 존중하는 절단에서 가장 가벼운 교차 간선은 안전합니다. 이것이 Prim과 Kruskal 증명의 핵심입니다.
  • Kruskal은 모든 간선을 가중치의 오름차순으로 보고 \(\text{set}(u)\ne \text{set}(v)\)set(u)!=set(v)일 때만 {u,v}를 추가합니다. \(\text{set}(u)=\text{set}(v)\)set(u)==set(v)이면 순환이 생기므로 건너뜁니다.

AI에게 첨부할 파일

  • `Vorlesung\06GraphAlgorithms.pdf`
  • `Vorlesung\06GraphAlgorithms__moodle_2026-06-16.pdf`
  • `Übung\AuD26_Sheet10.pdf`
  • `Übung\AuD26_Sheet10-Sol.pdf`
  • `data\aud_chunks.jsonl`

주제별 자료 현황

로컬 강의 자료에서 확보한 출처와 약점 기록을 확인합니다.

학습 가능

핵심 학습 항목 (08NP)

Vorlesung\08NP.pdf

출처
1
자료 조각
24
약점
0
학습 가능

수업 운영과 시험 안내

Vorlesung\00Administration.pdf

출처
1
자료 조각
12
약점
0
학습 가능

고급 알고리즘 설계 기법

Vorlesung\07AdvancedDesigns.pdf

출처
1
자료 조각
33
약점
0
학습 가능

알고리즘 기초와 문제 모델링

Vorlesung\01Introduction.pdf

출처
1
자료 조각
8
약점
0
학습 가능

알고리즘·자료구조·삽입 정렬·불변식

Übung\AuD26_Sheet01-GrpSol.pdf, Übung\AuD26_Sheet01-Sol.pdf

출처
3
자료 조각
11
약점
0
학습 가능

핵심 학습 항목 (Ankündigungen-150426)

Vorlesung\Ankündigungen-150426.pdf

출처
1
자료 조각
1
약점
0
학습 가능

점근 표기와 실행시간 분석

Übung\AuD26_Sheet02-Sol.pdf, Übung\AuD26_Sheet02.pdf

출처
2
자료 조각
3
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}11\)AuD26(Sheet)11

Übung\AuD26_Sheet11.pdf

출처
1
자료 조각
4
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}11-\text{GrpSol}\)AuD26(Sheet)11-GrpSol

Übung\AuD26_Sheet11-GrpSol.pdf

출처
1
자료 조각
6
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}12\)AuD26(Sheet)12

Übung\AuD26_Sheet12.pdf

출처
1
자료 조각
2
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}12-\text{Sol}\)AuD26(Sheet)12-Sol

Übung\AuD26_Sheet12-Sol.pdf

출처
1
자료 조각
4
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}13\)AuD26(Sheet)13

Übung\AuD26_Sheet13.pdf

출처
1
자료 조각
1
약점
0
학습 가능

수식이 포함된 학습 항목: \(\text{AuD}26_\text{Sheet}13-\text{Sol}\)AuD26(Sheet)13-Sol

Übung\AuD26_Sheet13-Sol.pdf

출처
1
자료 조각
2
약점
0
학습 가능

B-트리·해시 테이블·스킵 리스트·블룸 필터

Übung\AuD26_Sheet08-Sol.pdf, Übung\AuD26_Sheet08.pdf

출처
3
자료 조각
9
약점
0
학습 가능

균형 트리와 고급 자료구조

Vorlesung\04AdvancedDataStructures.pdf

출처
1
자료 조각
47
약점
0
학습 가능

분할 정복·정렬·마스터 정리

Übung\AuD26_Sheet03-GrpSol.pdf, Übung\AuD26_Sheet03.pdf

출처
2
자료 조각
8
약점
0
학습 가능

핵심 학습 항목 (Ergaenzung A07 F07)

Vorlesung\Ergaenzung A07 F07.pdf

출처
1
자료 조각
1
약점
0
학습 가능

핵심 학습 항목 (Ergänzung A02 VL6)

Vorlesung\Ergänzung A02 VL6.pdf

출처
1
자료 조각
1
약점
0
학습 가능

핵심 학습 항목 (Ergänzung A04 F42)

Vorlesung\Ergänzung A04 F42.pdf

출처
1
자료 조각
1
약점
0
학습 가능

시험 복기 자료

AuD Gedächtnisprotokoll SoSe 2025.md

출처
1
자료 조각
1
약점
0
학습 가능

그래프 알고리즘

Vorlesung\06GraphAlgorithms.pdf, Vorlesung\06GraphAlgorithms__moodle_2026-06-16.pdf

출처
2
자료 조각
136
약점
0
학습 가능

그래프 표현·BFS·DFS·강연결요소

Übung\AuD26_Sheet09-GrpSol.pdf, Übung\AuD26_Sheet09-Sol.pdf

출처
3
자료 조각
10
약점
0
학습 가능

연결 리스트·트리 순회·이진 탐색 트리

Übung\AuD26_Sheet05-GrpSol.pdf, Übung\AuD26_Sheet05-Sol.pdf

출처
4
자료 조각
17
약점
0
학습 가능

하한·기수 정렬·스택·큐

Übung\AuD26_Sheet04-Sol.pdf, Übung\AuD26_Sheet04.pdf

출처
2
자료 조각
4
약점
0
학습 가능

최소 신장 트리·Prim·Kruskal·최단경로

Übung\AuD26_Sheet10-Sol.pdf, Übung\AuD26_Sheet10.pdf

출처
2
자료 조각
7
약점
0
학습 가능

레드-블랙 트리와 AVL 트리

Übung\AuD26_Sheet06-Sol.pdf, Übung\AuD26_Sheet06.pdf

출처
2
자료 조각
8
약점
0
학습 가능

스킵 리스트·해싱·블룸 필터

Vorlesung\05RandomizedDataStructures-wi.pdf

출처
1
자료 조각
15
약점
0
학습 가능

정렬·점근 분석·분할 정복

Vorlesung\02aSorting.pdf, Vorlesung\02Sorting.pdf

출처
3
자료 조각
110
약점
0
학습 가능

스택·큐·리스트·트리·이진 탐색 트리

Vorlesung\03BasicDataStructures.pdf

출처
1
자료 조각
29
약점
0
학습 가능

문자열 매칭

Übung\AuD26_Sheet07-GrpSol.pdf, Übung\AuD26_Sheet07.pdf

출처
3
자료 조각
14
약점
0

학습 반복 과정

튜터링 후 약점 개념을 기록하고 학습 허브와 Obsidian을 다시 만듭니다.

1구두시험·객관식 세션
2약점 개념 기록
3허브 다시 만들기
4Obsidian 내보내기
5다시 시험 보기

재빌드 명령

python .\scripts\build_study_hub.py
python .\scripts\export_obsidian.py

마지막 생성: 2026-08-03 03:24