ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 빅오(Big-O) 표기법과 시간 복잡도
    전산학/자료구조 2024. 8. 23. 18:07
    728x90
    반응형

    빅-오(Big-O) 표기법은 알고리즘의 시간 복잡도나 공간 복잡도를 표현하는 데 사용되는 수학적 표기 방법입니다. 이 표기법은 최악의 경우의 성능을 나타내며, 알고리즘이 입력 크기(n)에 따라 얼마나 늘어나는지를 간략하게 표현합니다. 빅-오 표기법은 알고리즘의 효율성을 이해하고 비교하는 데 중요한 도구입니다. 여기에서는 몇 가지 일반적인 시간 복잡도와 그에 해당하는 빅-오 표현을 설명하겠습니다.

    1. O(1) - 상수 시간(Constant Time)

    • 설명: 알고리즘이 입력 크기에 상관없이 항상 일정한 시간이 걸립니다.
    • 예시: 배열에서 특정 인덱스의 요소에 접근하기, 변수에 값 할당하기 등.

    2. O(log n) - 로그 시간(Logarithmic Time)

    • 설명: 알고리즘의 실행 시간이 입력 크기의 로그에 비례하여 증가합니다. 보통 데이터를 반으로 나누는 분할 정복 알고리즘에서 나타납니다.
    • 예시: 이진 검색(Binary Search).

    3. O(n) - 선형 시간(Linear Time)

    • 설명: 알고리즘의 실행 시간이 입력 크기에 비례하여 증가합니다.
    • 예시: 배열이나 리스트를 한 번 순회하는 경우, 예를 들어 모든 요소를 출력하거나 검사하는 경우.

    4. O(n log n) - 선형 로그 시간(Linear Logarithmic Time)

    • 설명: 실행 시간이 n log n에 비례하여 증가합니다. 효율적인 정렬 알고리즘에서 흔히 볼 수 있습니다.
    • 예시: 병합 정렬(Merge Sort), 힙 정렬(Heap Sort), 퀵 정렬(Quick Sort) 등.

    5. O(n^2) - 제곱 시간(Quadratic Time)

    • 설명: 알고리즘의 실행 시간이 입력 크기의 제곱에 비례하여 증가합니다. 이는 주로 각 요소의 쌍을 비교하는 알고리즘에서 나타납니다.
    • 예시: 버블 정렬(Bubble Sort), 선택 정렬(Selection Sort), 삽입 정렬(Insertion Sort) 등.

    6. O(2^n) - 지수 시간(Exponential Time)

    • 설명: 알고리즘의 실행 시간이 입력 크기에 대해 지수적으로 증가합니다. 이러한 알고리즘은 일반적으로 매우 큰 입력 값에 대해서는 실용적이지 않습니다.
    • 예시: 피보나치 수열의 재귀적 계산, 결정 문제 해결을 위한 브루트 포스 알고리즘 등.

    7. O(n!) - 팩토리얼 시간(Factorial Time)

    • 설명: 알고리즘의 실행 시간이 입력 크기의 팩토리얼에 비례합니다. 이는 일반적으로 순열을 생성하거나 모든 가능한 경우의 수를 검토할 때 발생합니다.
    • 예시: 모든 가능한 정렬 순서를 생성하는 브루트 포스 정렬 알고리즘, 여행하는 세일즈맨 문제의 브루트 포스 해결 방법 등.

    빅-오 표기법은 알고리즘을 설계하고 비교할 때 중요한 도구로, 이를 통해 알고리즘의 성능을 간략하고 정확하게 파악할 수 있습니다. 각 표기법은 알고리즘의 이론적인 최악의 성능을 나타내며, 실제 성능은 구현 방법과 실행 환경에 따라 달라질 수 있습니다.

    728x90
    반응형
공기업 전산 필기 후기 + 공기업 전산학 지식 모음