Inflearn brand logo image

인프런 커뮤니티 질문&답변

수뼈님의 프로필 이미지
수뼈

작성한 질문수

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?

해결된 질문

작성

·

96

1

물론 시간복잡도 측정 방식 중 대표적인 빅오 표기법 자체가 n이 점점 커져서 무한대로 커지는 걸 가정하니까 1회 연산량이 몇 배 차이 난다 해도 aN+b에서 a나 다름 없으므로 제거하는 것 같긴 합니다. 하지만 같은 O(n)이면 n이 절반만 줄어도 (n이 무한히 커진다고 가정할 때) 그 효과가 무시할 만한 수치가 아닐 것 같아서 여쭤 봅니다. (ChatGPT 답변은 뭔가 신통치 않고, 근거자료 달라고 해도 못 가져오길래 질문드립니다.)

답변 2

0

감자님의 프로필 이미지
감자
지식공유자

아래 AI인턴의 답변대로 빅오 표기법은 입력의 크기가 커질 때 성능을 확인하는 용도로 사용됩니다.
이를 위해 상수를 제거해 알고리즘을 더 간단하고 일반화된 형태로 표현할 수 있습니다.
다만 수뼈님께서 생각하시기에 어떤 알고리즘을 사용하는데 상수도 무시하지 못할 것 같은 상황이라면 상수를 넣어도 괜찮습니다.
이는 계산하는 개발자의 판단에 있습니다.
일반적으로 상수는 제거한다고 기억해주시면 될 것 같습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 수뼈님께서 시간복잡도 계산 시에 왜 1회 연산당 연산량을 고려하지 않는지에 대해 질문 주셨군요.

빅오 표기법(Big O Notation)은 알고리즘의 성능을 나타내는 도구로, 주로 입력 크기(n)가 매우 클 때의 동작을 분석합니다. 이 방법은 주로 입력 크기가 클 때 지배적인 항에 초점을 맞추며, 상수나 낮은 차수의 항은 생략하게 됩니다. 이는 연산의 효율성을 분석할 때, 가장 중요한 부분은 “입력 크기가 커짐에 따라, 실행 시간이 얼마나 빨리 증가하는가”이기 때문입니다.

  1. 상수항 무시: 상수항은 입력 크기에 비례하는 계산 시간이 큰 차이가 날 때 영향력이 미미합니다. 예를 들어, O(n)O(2n)은 결국 O(n)으로 동일하게 취급되며, 이는 상수가 입력 크기가 커질수록 무의미해지기 때문입니다.

  2. 상수 최적화: 실무에서는 큰 입력을 처리할 때, 상수 계수를 최적화하는 것보다, 구조적 개선을 통한 복잡도 자체를 낮추는 것이 더 많은 성능 향상을 가능하게 합니다.

  3. 비교를 통한 효율 극대화: 서로 다른 시간 복잡도를 가진 알고리즘들이 있을 때, 예를 들어 O(n)O(n^2) 간의 비교가 중요한 이유는 입력이 증가할수록 O(n^2)O(n)보다 실행 시간이 훨씬 더 길어질 수 있기 때문입니다.

그럼에도 불구하고, 실제 구현에 있어서는 물론 이런 상수 최적화가 중요할 수 있으나, 이론적인 분석에서는 본질적인 증가율을 보는 것이 우선됩니다.

관련 설명을 제공한 기존 게시글이 있으니 한 번 참조해보시기 바랍니다:
- “시간 복잡도와 빅오표기법 이해하기”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

수뼈님의 프로필 이미지
수뼈

작성한 질문수

질문하기