본문으로 건너뛰기

M17.02 · 그래프 탐색·Dijkstra·A*·경로 비용

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 주어진 방향 그래프에서 Dijkstra의 비용 완화와 최소 비용 경로를 계산한다.
  • A*의 g·h·f를 계산하고 heuristic의 허용성·일관성과 잘못된 종료를 판정한다.
  • 비용 정의와 변경에 따른 경로 선택을 설명하고 그래프 최적성의 적용 범위를 보고한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M17.01의 node·간선·연결성을 연결한다. 우선순위, 비용 완화, heuristic과 최적성의 조건을 본문에서 정의한다. 작은 완전 입력 그래프를 종이로 탐색하며 실제 플래너나 로봇 실행은 필요하지 않다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

어떤 그래프에서 무엇을 최소화하는지 정한다

그래프 탐색은 시작 node에서 목표 node까지 간선을 이어 가는 순서를 찾는다. 방향 간선은 한쪽 이동만 허용하며 A→B가 있다고 B→A가 자동으로 생기는 것은 아니다. 이 단위는 유한한 방향 그래프와 고정된 비음수 간선 비용을 사용한다. 경로 비용은 지나간 간선 비용의 합이다. 비용을 거리로 정했는지 시간이나 교육용 점수로 정했는지에 따라 '좋은 경로'의 뜻이 바뀐다.

작은 합성 그래프의 node는 S,A,B,G 네 개이며 S가 시작, G가 목표다. 모든 간선과 비용은 S→A:2, S→B:1, B→A:0.5, A→G:2, B→G:5다. 이외의 간선은 없다. 값은 같은 단위의 교육용 비용점수이며 실제 미터나 초가 아니다. 세 가능한 경로 S-A-G, S-B-A-G, S-B-G의 합은 각각 4, 3.5, 6이다. 간선이 적은 경로와 비용이 작은 경로는 같지 않을 수 있다.

간선을 후보로 만들기 전에 M17.01처럼 충돌과 연결 구간이 유효하다고 확인해야 한다. 탐색기는 잘못 승인한 간선을 단지 비용이 낮다는 이유로 선택할 수 있다. 이후 새 장애물로 간선이 무효가 되면 과거 최적 경로가 그대로 유효하다는 보장도 없다. 그래프·비용·지도 버전과 시작 상태를 결과에 함께 기록한다.

Dijkstra는 알려진 누적 비용이 가장 작은 후보부터 본다

g(v)는 시작 S에서 node v까지 지금까지 발견한 가장 작은 누적 비용이다. 처음 g(S)=0이고 다른 node는 아직 경로를 몰라 ∞로 둔다. ∞는 실제 무한 거리를 측정했다는 뜻이 아니라 미발견 표시다. parent는 그 비용을 만든 직전 node이며 최종 경로를 되짚을 때 사용한다.

경로 탐색의 비용과 추정: 지금까지 비용 g → 남은 비용 추정 h → A* 우선순위 f = g + h → 결과 경로.그림 원본 크기로 보기

그림 M17.02-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

node u에서 나가는 간선 u→v의 비용 c(u,v)를 조사할 때 새 후보는 g(u)+c(u,v)다. 이 값이 기존 g(v)보다 작으면 g(v)와 parent를 바꾼다. 이를 완화(relaxation)라고 한다. 후보를 보관하는 우선순위 대기열은 비용이 가장 작은 항목을 먼저 꺼내며 값이 줄면 순서도 갱신해야 한다. 단지 한 번 발견했다는 이유로 값을 고정하지 않는다.

합성 예에서 S를 꺼내면 g(A)=2, parent(A)=S와 g(B)=1, parent(B)=S가 된다. 다음은 B다. B를 통해 A로 가면 1+0.5=1.5로 기존 2보다 작으므로 A를 갱신한다. G도 1+5=6으로 처음 발견한다. 하지만 G를 찾았다고 중단하면 비용 6인 경로를 골라 버린다.

대기열에서 A의 1.5가 G의 6보다 작으므로 A를 먼저 꺼낸다. A→G를 조사하면 1.5+2=3.5로 G가 갱신되고 parent(G)=A다. 마지막으로 G를 최소 비용으로 꺼낼 때 종료한다. parent를 G→A→B→S로 되짚고 반대로 읽으면 S-B-A-G, 비용 3.5다. 오래된 대기열 항목을 남기는 구현이라면 갱신 전의 값으로 확장하지 않도록 검사해야 한다.

LaValle 저자 교재의 Dijkstra 설명은 비음수 비용과 비용 순서의 역할을 설명한다. 비음수 조건에서는 최소 g로 꺼낸 node보다 더 싼 우회 경로가 나중에 등장하지 않는다는 성질을 이용한다. 음수 간선이 있는 문제에 그대로 적용하지 않는다. 이 유한 예에서는 비용 0인 간선도 허용할 수 있지만 중복 상태와 갱신 규칙을 처리해야 한다.

A*는 남은 비용의 낙관적인 추정을 더한다

A*는 현재까지의 g에 목표까지 남은 비용 추정 h를 더해 후보 순서를 정한다. h는 heuristic이며 목표를 향해 어떤 후보를 먼저 조사할지 안내하는 함수다. f는 그 합이고 세 값은 같은 비용 단위를 가져야 한다.

f(v)=g(v)+h(v).f(v)=g(v)+h(v).

합성 그래프에서 h(S)=3, h(A)=2, h(B)=2.5, h(G)=0을 주자. S를 확장한 뒤 A는 g=2, f=4이고 B는 g=1, f=3.5다. B를 먼저 확장하면 A의 g가 1.5로 줄어 f=3.5가 되고 G는 g=6, f=6이다. A를 거쳐 G는 g=f=3.5로 갱신된다. G를 꺼낼 때 얻는 경로와 비용은 Dijkstra와 같다. 이 작은 그래프에서는 확장 순서도 같으며 A*가 모든 입력에서 더 빠르다고 주장하지 않는다.

허용적(admissible) heuristic은 실제 최소 남은 비용을 과대평가하지 않는다. 이 그래프의 실제 남은 최소 비용은 S에서 3.5, A에서 2, B에서 2.5, G에서 0이다. 주어진 h는 모두 그 이하다. 원래 문제의 제약을 일부 없애 얻은 더 쉬운 문제의 비용이 하한이 되는 경우가 있다. 그러나 거리 비용이 아닌 점수에 미터 단위 직선거리를 그냥 더하면 그런 근거가 없다.

일관성(consistency)은 각 방향 간선에서 h(u)≤c(u,v)+h(v)가 성립하는 조건이다. h(G)=0도 둔다. 예를 들어 B→A에서는 2.5≤0.5+2로 같고 S→B에서는 3≤1+2.5다. 다른 세 간선도 조건을 만족한다. 이 조건에서는 앞에서 확장한 node를 영구 닫는 표준 그래프 탐색으로 최적성을 유지할 수 있다. 허용적이지만 비일관적인 h라면 더 싼 경로를 뒤늦게 발견한 node를 다시 여는 처리가 필요할 수 있다. '방문했으니 무조건 무시'는 모든 A* 구현에 적용하는 규칙이 아니다.

Modern Robotics 저자 Graph Search는 목표를 처음 발견한 때와 최소 우선순위로 꺼내는 때를 구분한다. Berkeley CS188 공식 교재는 더 작은 비용으로 재방문하는 경우를 처리해야 하는 그래프 탐색의 경계를 설명한다. 구현과 heuristic 조건을 함께 확인해야 최적이라는 말을 사용할 수 있다.

과대 heuristic과 비용 변경을 구별한다

같은 그래프에서 h(B)=10, 나머지 h=0으로 바꾸면 B의 f는 11, A의 f는 2다. A를 거쳐 G 비용 4를 얻고 G를 f=4로 먼저 꺼내 종료한다. 실제 최소는 3.5지만 B 방향을 과도하게 비싸다고 추정해 놓친 것이다. h(B)=10은 실제 남은 비용 2.5보다 크므로 허용 조건을 위반한다. h를 크게 하면 항상 더 좋은 탐색이라는 생각은 틀리다. h=0이면 A*의 순서는 Dijkstra와 같아진다.

반대로 B→A 비용 자체를 0.5에서 3으로 바꾸는 것은 heuristic 오류가 아니라 문제의 변경이다. 새 세 경로 비용은 4, 6, 6이므로 최소는 S-A-G의 4다. 위험 구간의 비용을 올렸다는 해석을 붙일 수 있지만 점수를 실제 충돌 확률로 부르면 안 된다. 위험을 더했는지 간선을 금지했는지도 구분한다. 금지 조건을 큰 유한 비용 하나로 대신하면 대안이 없을 때 그 간선을 선택할 수 있다.

최적성은 주어진 유효 그래프와 고정 비용, 알고리즘 조건 안에서의 성질이다. 실제 로봇의 속도·가속도, 위치 추정과 지도 변경, 통신 지연을 이 합성 비용이 포함하지 않는다. 기존 3.5 안전한 텔레오퍼레이션 루프의 실행 계층 점검과 6.6 평가 설계의 조건별 평가를 연결해 계획과 실행 근거를 분리하자. 활동의 계산 통과는 실제 최단 주행이나 안전 승인이 아니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 본문의 다섯 방향 간선과 비용, h(S,A,B,G)=(3,2,2.5,0)이다. 과대 heuristic 변형은 h(B)=10과 나머지 0이며, 별도의 비용 변경 변형은 원래 h와 무관하게 B→A를 3으로 바꾼다.

  1. Dijkstra의 g와 parent를 S, B, A, G의 처리 순서에 따라 표로 갱신한다. G가 처음 발견될 때와 꺼내질 때의 비용을 비교한다.
  2. A*의 g/h/f를 계산하고 다섯 간선의 일관성·실제 남은 비용 대비 허용성을 점검한다. 과대 h에서 고르는 경로도 적는다.
  3. 비용 변경 뒤 세 경로 합과 선택을 구하고 그래프 최적성이 실제 이동에 관해 보장하지 않는 조건을 설명한다.

관찰은 비용 갱신, heuristic 검증, 선택과 적용 범위로 나눈다. 막히면 간선 방향을 그린 뒤 합산한다. 비용을 줄였으면 대기열 순서와 parent도 함께 갱신하며 실제 프로그램은 필요하지 않다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

원래 그래프에서 B를 통해 G를 처음 발견했을 때 종료하면 경로와 비용은 무엇인가? 올바른 Dijkstra 갱신과 종료 결과를 비교하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

원래 그래프에서 h(A)=2, h(B)=3, h(G)=0이라고 한다. B의 허용성과 B→A의 일관성을 판정하라. h를 모두 0으로 두면 어떤 탐색이 되는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

B→A를 금지했지만 비용만 100으로 바꾸었다고 한다. 원래 남은 간선에서 선택 경로는 무엇이며, 이런 표현이 일반적으로 금지를 보장하는가? 실제 실행 결과를 판단할 추가 조건도 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.