
Korean: 
66번 국도에 관한 것이었는데
이 도로는 시카고, 일리노이, 
로스앤젤레스, 캘리포니아를 잇는
횡단 도로였습니다
미국에서 돌아다닌다면
가장 빠른 길이기 때문에
모두가 아는 유명한 고속도로였습니다
여기서 질문은 가장 짧은 
경로를 어떻게 찾느냐입니다
아무 경로나 그럭저럭한 경로가 아니고
실제로 최단 경로를 어떻게 찾을까요?
이것이 바로 오늘 강의의 주제입니다
하지만 슬프게도 66번 국도는
아이젠하워 대통령이 
주간고속도로 체계를
도입하면서 거의 없어졌습니다
왜 그랬을까요?
ROTC 출신이라면 알 수도 있겠네요
왜 아이젠하워 대통령이 주간고속도로를

English: 
PROFESSOR: It was written about
Route 66, which used to
be the main highway between
Chicago, Illinois and Los
Angeles, California.
Very famous highway because
anybody who wanted to go
across country always took route
66 because it was the
shortest way to go.
And the question is, how do you
find the shortest path?
Not just any old path or a good
path, but how do you find
the very shortest path?
And that'll be the subject
that we're
going to discuss today.
But route 66, I lament its
passing, but it's been largely
replaced by the interstate
highway system that was
created by President
Eisenhower.
Guess why?
Let's see, maybe the
ROTC people know.
You know why Eisenhower
created the

Korean: 
만들었는지 알고 있나요?
물론 공보업무에서는
항상 공식 입장과 진실된 이유에
거리가 있기 마련이죠
공식 입장에 따르면
학생: 무기를 옮기기 위해서요?
핵무기를 여기저기 옮기기 위해서라
음 좀 더 좋게 얘기하면
아이젠하워는 미국이 아무리
폭탄으로 철도를 파괴해도
독일 군대는 아우토반
(Autobahn)을 통해 빠르게
병력을 옮길 수 있다는 걸 깨달았습니다
따라서 미국에도 어떤 침입이 들어와도
고속도로를 통해 빠르게 군력을
이동시킬 수 있기를 바랐습니다
결과적으로 우리는 꽤 좋은 고속도로와
그럭저럭한 철도가 생겼죠
흥미롭지요
재밌게도,
저는 이 도로의 수혜자입니다.
저는 일리노이주의 
이스트 피오리아 출신인데
도로를 만드는 트랙터를 생산하는
캐터필러 트랙터 회사
(Caterpillar Tractor Company)의

English: 
interstate highway system?
Well, in public affairs, of
course, there's always a
distinction to be
made between the
explanation and the reason.
The explanation was--
AUDIENCE: To move weapons
across the country?
PROFESSOR: Well,
to move nuclear
weapons across the country.
Let's put it in, sightly,
more benign terms.
Eisenhower had observed that
the German army was able to
move its troops rapidly, even
though we bombed their
railroads into oblivion because
of their auto bond.
So Eisenhower conceived that if
there were ever an invasion
in the United States, we too
would want to be able to move
our forces around on
a highway system.
And consequence of that, we
have a pretty good highway
system and pretty awful
railroad system.
It's interesting.
I'm a beneficiary of that, in a
funny way, because I'm from
East Peoria, Illinois.
And I was surrounded by the
factors of Caterpillar Tractor

Korean: 
주변에 살았습니다
덕분에 제 고등학교는 
그 공장이 내는 세금으로
돈을 물 흐르듯 쓸 수 있었죠
어쨌든 오늘은 그냥 좋은 경로가 아닌
가장 좋은 경로를 찾을 겁니다
저번처럼 예시를 다뤄보고
프로그램도 돌려볼 것입니다
혹시 S와 G 사이의 최단 
경로를 찾을 수 있나요?
여러분이 찾아낸 최단 경로에
목숨을 걸 수 있나요?
아마 아니겠죠
눈을 써서 좋은 
경로를 찾을 수 있습니다
하지만 최적의 경로는 찾을 수 없어요
오늘 우리가 할 것은
우리 머릿속의 어떤 당연한 
과정을 모델링하는 것이 아니에요
하지만 최적 경로를 찾는 것은
인공 지능 수업을 들은 사람이라면
꼭 알아야 하는 기술입니다

English: 
Company, which made all of the
tractors that built all of
those roads.
So my high school spent money
like water from that huge tax
base of all those factors.
Anyway, today we want to find
the very best path, instead of
just a good path.
And like the last time, we'll
deal with, both, an example
that we can set our program
to work on.
By the way, can you find the
shortest path between S and G?
Would you like to bet your
life on the shortest path
between S and G?
Probably, not.
With your eye, you can
find a good path.
But you can't find the
best possible path.
Today, what we're doing is
probably not modeling any
obvious property of what we
have inside our heads.
But being able to find the best
path is part of the skill
set that anybody who's had a
course artificial intelligence

English: 
would be expected to have.
So we're going to look at it,
even though it's not like many
of the things we do.
A model of something
that's, probably,
going on in your head.
So we're going to use, both,
this example from Cambridge
and our Blackboard example.
Let's see, we have to
caution ourselves.
Tanya, is search about maps?
No, it's about what?
Starts with a C. And the next
letter is H. And it ends up
being choice.
So we're talking about choice.
Not about maps.
Even though our examples are
drawn from maps because
they're convenient, they're
visual, and helps understand
the concepts behind the
algorithms I'm talking about.
So let's start off by looking
at our classroom example.
And I did something today that
I neglected to do last time.
And that's talk to you
about what I meant
by heuristic distance.
It's those pink lines that
I just drew on the map.

Korean: 
지금까지 한 것과는
조금 다르지만 한번 봅시다
보통은 우리 머릿속의 과정을
모델링했었죠
여기 케임브리지 예시와
칠판에 있는 예시를 사용할 겁니다
하지만 명심해야 합니다
타냐, 검색은 지도에 관한 것인가요?
아니죠, 뭐에 관한 것이었죠?
C로 시작하는 단어로 그다음은 H고
선택(Choice)이었죠
우리는 선택을 얘기했었어요
지도가 아닙니다
편리 상 지도를 예시로 쓰지만
이는 우리가 다루는 알고리즘을
직접 보고 이해하는 데 
도움이 되기 때문이었습니다
저번 시간에 봤던 예시로 시작해봅시다
저번에는 없었던 무언가를 추가했습니다
바로 휴리스틱 거리에 대해
얘기하기 위해섭니다
지도에 그린 분홍색 
선들을 말하는 겁니다
두 점 사이에 길이 없어도

English: 
We're talking about the distance
as the crow would fly
between two places, even though
there's no road that
goes between those two places.
So in general, and we discussed
last time, it's best
to get yourself into a place
that's close, as the crow
flies, to your goal.
And of course, that's a
heuristic and it can get you
in trouble because it's
not always true.
It would appear that being at
node E is a good place to be
because it's not very far from
G. But in that particular case
designed to illustrate the
point, being close is,
actually, not a good thing
because it's a dead end.
But in general, it's a good
thing to be close.
And we talked last time about
hill climbing and beam search,
being close was the objective
of those kinds of searches.
And at one point, in a beam
search illustration, we had C,
B, A, and D. We had paths
terminating at all four of

Korean: 
까마귀 한 마리가
날아갔을 때의 거리 같은 겁니다
저번 시간에 얘기한 듯 일반적으로는
목표를 향해 날아가는 까마귀처럼
목적지를 향해 
나아가는 게 가장 좋습니다
물론 이것은 하나의 휴리스틱이고
항상 진리는 아니기 때문에 
문제가 생길 수도 있습니다
예를 들면 E로 가는 것이 좋다고
생각하게 될 수도 있습니다
하지만 여기서는 가까워져 봤자
막다른 골목이기 때문에 
좋은 선택이 아닙니다
하지만 일반적으로는 
가까워질수록 좋아요
저번에 언덕 오르기와
빔 탐색을 얘기했었죠
둘 다 목적지에 
가까워지는 것이 목표였죠
저번에 빔 탐색을 할 때
C, B, A, D로 끝나는 경로들이

English: 
those nodes as candidates for
the next round of search.
And we decided on the basis of
these airline distances to
keep D and B, and reject A and C
because they're further away
as the crow flies.
Now, I repeat this even though
many of you have had this
fixed already in your tutorials
because we're going
to need this concept of
heuristic distance today.
And I wanted to be sure that
that point has been clarified.
So now, with this smaller map I
imagine you can do, by eye,
a determination of what
the shortest path is.
What is it, Juana?
Can you help me out with that?
AUDIENCE: S, A, D, G.
PROFESSOR: S, A, D, G. And if
you add up those distances,
the distance is 11 along that
path that goes from S, first
to A, and then to D, and then
from D to G. So Juana asserts

Korean: 
다음 탐색 대상으로 있었습니다
우리는 이 일직선 거리를 기준으로
D와 B만 남기고
목적지에서 더 멀어지게 
되는 A와 C는 버렸습니다
이미 여러분이 튜토리얼에서
경험을 했겠지만 오늘 수업에서
휴리스틱 거리의 개념은
중요하니 다시 얘기한 겁니다
그러니 모두가 잘 이해했으리라 믿어요
자 여기 더 작은 지도를 보면
여러분은 눈으로도 
최단 경로를 찾을 수 있겠죠
후아나, 그게 뭘까요?
답해 줄 수 있나요?
후아나: S, A, D, G
S, A, D, G입니다
그리고 거리를 다 더하면 11입니다
S에서 출발해 A로 가고 
D로 가서 G에 도착합니다

Korean: 
후아나는 이게 최적 경로라고 합니다
후아나의 말을 신탁(Oracle)이라고 생각합시다
어떤 알고리즘을 처음 이해하려 할 때
즉 어떤 문제 풀려고 할 때
이는 굉장히 중요한 과정입니다
그러니까 어떤 문제를 풀 때
답을 아는 사람에게 
물어보는 것이 가장 쉽습니다
구글도 모든 것을 다 알겠죠
이 상황에서 우리는 후아나가 답을
알고 있다고 믿을 겁니다
그녀의 말에 따르면 
최단 경로는 S, A, D, G이고
경로의 길이는 11이죠
하지만 그녀를 완전히 믿지는 않습니다
왜냐하면 여러분이랑 
같은 의대에 지원하려고
일부러 망치려는 걸 수도 있잖아요
따라서 우리는 경계심을 가지고 그녀가
속이는 게 아니라는 것을
직접 확인하기 전까지는
답을 받아드리지 않을 겁니다
어떻게 확인할 수 있을까요?
한 가지 방법은 우리가 만들 수 있는

English: 
that that is the best path.
And we're going to treat Juana
as an Oracle because we're
going to follow, in our initial
attempt to understand
these algorithms,
a very important
principle of problem solving.
And that is that, if you want
to solve a problem, the
easiest way is, usually, ask
somebody who knows the answer.
Or Google, which also, probably,
knows the answer.
So in this particular case,
we believe that
Juana knows the answer.
And she said that the shortest
path is S,A, D, G, and its
path length is 11.
But we don't trust her because
we're applying to the same
medical school and she may
be trying to screw us.
[LAUGHTER]
PROFESSOR: So we're going to
be very cautious about
accepting her answer until we've
checked it to make sure
that she hasn't attempted
to delude us.
So how do we go about
doing that?
Well, one way to do that is to
check to be sure that all

Korean: 
모든 다른 경로가
후아나가 말해준 것보다
길이가 길다는 것을 확인하는 겁니다
그녀는 S, A, D, G라고 말했고
이 경로의 길이는 11이었습니다
지금부터 저는 다이어그램을 그리듯
트리의 남은 부분을 그려나갈 것입니다
하지만 영국박물관이나
무작위 방법을 쓰지 않을 겁니다
어떻게 할 것이냐면 연장할 수 있는
최단 경로에 해당하는 
선택지만 볼 겁니다
연장할 수 있는 최단 경로란
이런 겁니다
시작 노드만 가지고 있는 것이죠
여기서 B로 갔을 수도 있습니다
만약 B로 갔다면
이 경로의 길이는 5가 됩니다

English: 
other possible paths that we
could develop end up being,
for sure, longer than the one
that Juana has told us about.
So she's told us about S, A, D,
G. And it has a total path
length of 11.
And now what I'm going to do is
I'm just going to develop
the rest of this tree-like
diagram.
But what I'm going to do is,
I'm not going to do it in a
British Museum or random way.
What I'm going to do is, I'm
going to look at the choice
that corresponds the shortest
path that can be extended.
So the shortest path that
can be extended is
this one right here.
The one that just has the
starting node in it.
And I could have gone this other
way to B. And if I go
that other way to B, then
the path length along
that side is 5.

Korean: 
이처럼 A에서 끝나는 경로를 보면
여기까지의 길이는 3입니다
이제 A와 B 이 두 개의 선택지가 있죠
이 두 점을 연장하면
더 많은 선택지가 생길 겁니다
저는 항상 더 짧은 길이의
경로를 연장해 나갈 겁니다
여기서는 S에서 A로
가는 이 경로일 겁니다
S, A를 선택했을 때는 D 말고
B로 갈 수도 있습니다
그럼 여기까지의 누적 
경로 길이는 7이 됩니다
지금 우리는 누적 경로
길이를 보고 있습니다
현재까지 온 거리입니다
저번 시간에는 목적지에서의
거리를 주로 봤었습니다
우리가 목적지에서 얼마나
멀리 있는지를 사용했습니다
지금은 완전 반대를 보는 겁니다
우리가 얼마나 더 가야 하는지가 아닌

English: 
And likewise, if I look at the
path that terminates in A,
that has a path length of 3.
So now I've got two choices.
A and B. I've got choices
that extend
beyond those two places.
So I'm always going to
extend the one that
has the shorter length.
So in this case, that would be
the path that goes from S to
A.
So if I from S to A, I don't
have to go to D. I can also go
to B. And if I go to B, then the
accumulated path length is
S, A, B. That's 7.
And know that we're talking now
about the path, like the
accumulated path length, that
we've traveled so far.
Last time we were talking
a lot about
distances to the goal.
Heuristic estimates of how
far we are from the goal.
Now we're doing exactly
the opposite.
We're not considering how
far we've got to go.

Korean: 
우리가 지금까지 얼마나
멀리 왔는지를 보는 겁니다
다시 이 절차를 계속해보면
우리는 7과 5중에 선택합니다
따라서 다시 S, B의 B로 돌아가면
S, B, A와 S, B, C로
연장할 수 있습니다
이번엔 길이가 어떻게 되나요?
S, B, A는 9이고
S, B, C도 9네요
따라서 이제 가장 짧은 
경로는 다시 이게 됩니다
연장해봅시다
S, A, B에서는 C밖에 갈 수 없죠
길이에 4가 추가됩니다
총 11이 되죠
여기서 무엇을 알 수 있나요?
더 이상 볼 필요가 없습니다
왜냐하면 이미 이 경로의 길이가
후아나가 알려준 것과 똑같으니까요

English: 
We're only thinking about how
far we've gone so far.
So now, repeating these
steps again.
I've got 7 and 5.
So I'll go over and consider
the choices that go through
the B node on the path S, B. And
that gives me S, B, A and
S, B, C. And what are
those path lengths?
Well, let's see.
S, B, A would be 9.
And S, B,C would be 9.
And now the shortest path
is this one over here.
So I extend that.
I go S, A, B. S, A, B. The only
place I can go is C. That
adds another 4.
So that's 11.
And what do I know
about that path?
I don't have to take that
any further, right?
Because the path length, since
I've gone on that path
already, is equal to the path
length that Juana has told me
gets me to the goal.

English: 
So it'll be foolhardy to carry
on because, presuming that
these lengths are all
non-negative, I
can't do any better.
And I can't even do as well,
unless I've got a length that
has 0 length.
So now that I have that idea,
I can quickly finish up by
saying, well, let me consider
these two paths.
S, B, A can only go to D. And
if I go to D, that adds 3.
9 plus 3 is 12.
Nothing else can happen there
because that's 12 and I've got
a path of a goal that's 11.
C, I can only go to E. It's a
dead-end but I don't have to
think about that because I
know that the accumulated
distance along this
path is 6 plus 9.
That's 15.
So all of these need not be
extended any further because
their length, accumulated so
far, is equal to or less than
a length of a goal.
So I've checked the Oracle.

Korean: 
계속 탐색한다면 바보겠죠
왜냐하면 모든 거리가 
음수가 아니라고 가정했을 때
더 나아질 수가 없으니까요
그리고 길이가 0인 길이 없는 한
마찬가지로 더 볼 필요가 없습니다
이 사실을 알았으니 빠르게
이 나머지 두 개도 끝내봅시다
S, B, A 다음에 D로 
가면 거리에 3이 추가됩니다
9 더하기 3은 12입니다
더 이상 나아질 수가 없습니다
왜냐하면 길이가 11인
경로가 이미 있으니까요
C는 E로밖에 못가고
이는 막다른 골목입니다
하지만 생각할 필요가 없죠
왜냐하면 이 경로의 누적 길이는 이미
6 더하기 9인 15이니까요
따라서 이 나머지는 더 이상
연장해 볼 필요가 없습니다
이미 누적 길이가 모두 우리가 
찾은 것보다 크거나 같으니까요
따라서 이렇게 신탁을 검증했어요

English: 
And although we're applying to
the same medical school, Juana
has told me the truth.
So now, unfortunately, Juana's
not always around.
And I don't always
have an Oracle.
So I'm going to have to have
some way of finding the
shortest path without
that Oracle
that I can check against.
Let's see.
What can I do?
Maybe I can do the same
thing I just did.
Always extend the shortest path
so far and hope that I
run into the goal
at some point.
And then I have to ask myself
the question how much extra
work did I need to do when
I don't have the Oracle?
Let's just try it and
see what happens.
You don't have that
path to start.
So I just have S. This
distance is 0.
I can go either to A or B.
If I go to A, I've got
a distance of 3.
Here, I've got a
distance of 5.

Korean: 
같은 의대에 지원하는 상황이지만
후아나는 진실을 말해줬습니다
하지만 후아나가 항상
곁에 있는 것은 아닙니다
따라서 항상 신탁이 있는 것이 아니죠
따라서 검증할 신탁이 없어도
최단 경로를 구할 수 있는
다른 방법을 찾아야 합니다
어떻게 할 수 있을까요?
방금 한 것을 똑같이 해도 되겠죠
항상 제일 짧은 경로를 연장해가면서
언젠가 목적지에 
도달할 것이라 믿는 겁니다
여기서 생각해볼 점은 이렇게 하면
신탁이 없을 때는 얼마나
많은 일이 더 필요한가입니다
한번 직접 해봅시다
처음에는 아무런 
경로 없이 S만 있습니다
길이는 0입니다
그리고 A나 B로 갈 수 있습니다
A로 가면 길이는 3입니다
여기 길이는 5입니다

Korean: 
우선 경로 S, A를 연장해보겠습니다
B나 D로 갈 수 있습니다
B로 가면 길이가 7이고 
S, A, D로 가면 6입니다
트리에서 가장 짧은 경로를 찾아보면
S, B를 다시 보게 됩니다
따라서 연장해봅시다
S, B에서는 A와 C로 갈 수 있죠
이 연장된 두 경로의 누적 길이는
각각 9입니다
이제 가장 짧은 것은 S, A, D입니다
근데 봅시다
아직 목적지에
도달하지 못했습니다
그렇다면 지금까지 제가 한 일은
모두 소용이 없는 것일까요?
아니요 지금까지 
찾은 모든 경로의 길이는
목적지까지의
최단 거리보다 짧습니다
아직 목적지에
도달하지 않았으니까요

English: 
I'll extend the path that goes
S, A. That can either got to B
or D. Going to B or D
gives me 7 that way.
S, A, D gives me 6.
So looking across all of these
and extending the shortest
path so far takes me back over
to S, B. So I extend those.
S, B takes me to A or C.
And those, in turn, have
total accumulated path
lengths of 9 and 9.
Now the shortest one is S, A,
D. You see the pattern.
Now let's see.
I haven't found the goal yet.
So I can ask myself the question
is any of the work
that I've done so far wasted?
No because all of the paths
that I've got so far are
shorter than the path of the
goal because the goal
hasn't shown up.

English: 
So when I do my oracle checking
after I found the
goal, none of that work's
going to be wasted.
So in the end, I don't,
actually, need the Oracle.
I could just develop this
graph by extending the
shortest path, so far,
until I hit the goal.
And then, perhaps, do a little
remaining checking to make
sure that all the other paths
extend with a length that's
greater than the path
of the goal.
So if those words are confusing,
let's carry on with
the algorithm, and I think
it'll be clearer.
So let's see.
We've got the 7,
6, and two 9s.
We're going to extend
the one that's 6.
That gets this to the goal.
Boom, we've got it.
And we've got a path
length of 11.
Note, though, we can't quit
because we have to be sure
that all other paths
are longer than 11.
So now we have to carry on with
the same algorithm that
we started with.
The Oracle checking algorithm.
And when we do that, we look
for this shortest path, so

Korean: 
따라서 해답을 찾은 후 
이를 검증하려고 할 때
방금 한 일은 쓸모가 있습니다
사실 신탁 따위는 필요가 없는 거죠
그냥 이런 그래프를 그려가면서
목적지에 도달할 때까지 
최단 경로를 연장하는 거죠
그리고 도달하면 남은 경로들이 모두
방금 찾은 경로보다
길 수밖에 없다는 
것을 확인하면 됩니다
이해를 위해 예시를 계속 봅시다
그럼 더 분명해질 겁니다
봅시다
7, 6, 그리고 9가 두 개 있어요
길이가 6인 경로를 연장합니다
목적지에 도달합니다
짠, 찾았습니다
길이가 11인 경로를 찾았습니다
하지만 여기서 그만두면 안 됩니다
다른 경로의 길이는 모두 
11 이상인 것을 확인해야 합니다
따라서 우리가 처음에 썼던
알고리즘을 다시 써봅시다
신탁을 검증하는 알고리즘이죠
아직 연장하지 않은 경로 중

English: 
far, that has not
been extended.
That's B, S, A, B. That
goes to C. That's 11.
So we're done there.
A goes to D. That adds 3.
That's 12.
C goes to E. That adds 6.
That's 15.
And sure enough, we're done.
OK?
Elliot?
AUDIENCE: Does it know that
there's know that there isn't
a chance that you could have a
zero distance extension from
the [INAUDIBLE]?
PROFESSOR: The question is, does
it know that there's no
zero distance length
that's coming up.
That's an implementation
detail.
This guarantees you'll find a
path that's as short as any
that you can possibly find.
But there might be others if
they're zero-length lengths.
As long as they're non-negative
lengths, we're safe.

Korean: 
가장 짧은 것을 찾습니다
그럼 S, A, B가 C로
가고 길이는 11입니다
여기는 끝났습니다
A는 D로 가고 길이에 3을 추가하면
12가 됩니다
C는 E로 가고 길이에 6을 더하면
15가 됩니다
이제는 확실히 끝났네요
알겠나요?
엘리엇?
학생: 저 알고리즘에서
학생: 미래에 길이가 
0인 길이 없다는 것을
학생: 보장할 수 있나요?
엘리엇은 알고리즘이 길이가 0인 길이
나오지 않을 것을 아는지 물었습니다
그건 구현의 세부 사항입니다
이 알고리즘은 찾을 수 있는 경로 중
최단 경로 하나는 찾는다고 보장합니다
길이가 0인 길이 
있다면 여러 개일 수도 있죠
하지만 길이가 음수만 아니라면
상관없습니다

English: 
We've got a shortest path.
So that was easy.
And now we can repeat the
exercise with our more
complicated map of Cambridge.
First of all, let's do depth
first just to recall what that
looks like.
That is, certainly,
not a short path.
So let's try this idea, which,
by the way, bares the label
branch inbound.
Let's try branch inbound
on the same map.
And there it goes.
Each of those little flickers
is trying another path.
So you can see it's working
it's guts out to find the
shortest path.
It's almost there but it's
almost a pathological case.

Korean: 
최단 경로 하나는 찾아냅니다
간단하죠
이번에는 이 방법을 좀 더 복잡한
케임브리지 지도에 적용해봅시다
우선 복습을 위해 깊이 우선 탐색을
한번 돌려봅시다
누가 봐도 최단 경로는 아닙니다
이번에는 방금 배운 
분기 한정법(branch and bound)을
써서 돌려봅시다
여기 같은 지도에서 시도해봅시다
돌아가고 있어요
깜빡거릴 때마다 경로를 
하나씩 시도해보는 겁니다
보시다시피 최단 경로를 찾기 위해서
정말 열심히 일하고 있습니다
거의 다 왔는데 운이 나쁜 상황이네요

English: 
Or it's almost doing
British Museum.
There it's finally found
the shortest path.
Now there are some things
we can ask about that.
But first of all, before I ask
anything about it, I'd like to
get the flow chart up on the
board because we're going to
decorate that flow chart,
a little bit, as we go.
So the first thing we do
is initialize queue.
Then we're going to test first
path on the queue.
Then we might be happy because
we might be done.
We might have a shortest
path to the goal.
Actually, that's not
quite true, is it?
We can't really quit until
every other path is it.
Well, that's interesting.
If the first element on the
queue gets us all the way to

Korean: 
영국박물관 방법과 비슷한 짓을 합니다
드디어 최단 경로를 찾았습니다
여기서 몇 가지 질문을 할 수 있는데
우선 그 전에
다시 우리의 순서도로 돌아가서
순서도를 좀 더 채워볼 겁니다
맨 처음에 큐를 초기화했습니다
그리고 큐에 있는 
첫 번째 경로를 봅니다
이 경로가 목적지에 
도달한다면 기쁘게 끝낼 수 있겠죠
최단 경로를 찾았을 수도 있습니다
하지만 이는 사실이 아니죠
다른 경로까지 확인하기 
전까지는 멈출 수 없으니까요
여기서 흥미로운 건
만약에 큐에서 꺼낸 첫 번째 경로가
목적지에 도달하고

Korean: 
큐를 길이순으로 정렬해뒀었다면
이대로 탐색을 끝내도 될까요?
됩니다. 왜냐하면 
정렬된 나머지 경로는
모두 더 길기 때문입니다
더 짧은 경로가 나올 수 없겠죠
따라서 만약 꺼낸 경로가 
목적지에 도달하면 끝납니다
하지만 이런 일은 드물죠
그래서 우선 첫 번째 경로를 연장합니다
연장한 경로를 큐에 다시 넣고
큐를 정렬할 것입니다
저번에 했던 것이랑 굉장히 비슷합니다
항상 연장하고 큐에 다시 넣습니다
다시 큐의 첫 번째를 보고
목적지에 도달하는지 보고
도달한다면 끝난 거죠

English: 
the goal, and we sorted our
queue by path length, are we
through as soon as that first
element on the queue gets us
to the goal?
Yeah because every other
path must have been
sorted beyond it.
And therefore, it can't offer us
a shorter path to the goal.
So if the first path is a path
to the goal we're done.
Alas, it usually isn't.
So we'll extend first path.
We're going to put all those
extensions back on the queue,
and then we're going
to sort them.
So that's, pretty much, the
same as we did last time.
We're always going to put the
elements back on the queue.
We're going to look at the first
element the queue and
see if it's a winner.
If it is we're done.

English: 
If it's not, we're going
to extend it.
And then go back in here
and try again.
Well, sort of.
But we noted that this did a
awful lot of work because if
we look at those statistics
up there, it put 1,354
paths onto the queue.
That's the N queueing part.
And then it extended 835,000
paths that had come to the
front of the queue.
Now I'd like to give you an
aside because it's easy to get
confused about N queueing
and extending.
In all of the searches we did
last time, it would have been
perfectly reasonable to keep a
list of all the paths that we
had put onto the queue.
An N queueing list.

Korean: 
아니면 또 연장합니다
여기로 돌아가 다시 시도하는 겁니다
대충 이렇습니다
하지만 이미 봤듯이 이렇게 하면
탐색을 굉장히 많이 합니다
저기 결과를 보면 큐에 
총 1354개의 경로를 넣어요
큐에 넣는 횟수입니다
그리고 실제로는 835개의 경로를
연장해서 큐의 앞에 넣습니다
잠깐 다른 얘기를 하겠습니다
큐에 넣는 것과 
연장하는 것을 혼동할 수 있어요
저번 시간까지 다룬 탐색에서는
우리가 큐에 넣었던 모든 경로를 담은
리스트를 만드는 것이 도움이 됐습니다
큐에 넣은 경로의 리스트였죠
이 리스트를 사용해서 
특정 단말노드를 갖은 경로를

Korean: 
큐에 넣은 적이 있다면 이 경로를
다시 큐에 넣지 않았습니다
저번에 말했던 건 이미
연장한 것들을 기억해서
다시 하지 말자는 것이었죠
이미 연장했던 노드를 기억해두고
다시 연장을 안 할 수도 있고
아니면 경로의 단말노드를 보고
이미 큐에 있는 경로라면
다시 큐에 넣지 않게 할 수도 있겠죠
제가 저번 시간에 큐에 넣는 것에
관한 내용을 적었었는데
사실 연장에 대한 것이어야 했어요
큐에 넣은 것들을 기억했었지만
이번에는 연장하는 
것들을 기억해야 합니다
우리는 짧은 경로만
연장하고 싶기 때문입니다
따라서 이런 최적 경로를 찾을 때는
큐에 넣는 것을 기억하는 
것은 도움이 되지 않습니다
다시 돌아와서 얘기하고 싶은 것은

English: 
And never add a path to our
queue if it terminates in a
node that some other path
terminate in that has already
gone to the queue.
What I said last time was let
us keep track of the things
that have been extended and
not extend them again.
So you can either keep track
of the nodes that have been
extended and not extend
them again.
Or look at the paths with nodes
that terminate, and
blah, blah, blah and been put on
the queue, the queued ones.
And not put things back
on the queue again.
And I think, last time, I may
have put a column in there
that said N queued.
It should have been extended.
Even though N queued worked last
time, only extended works
this time because we want to
be sure that anything we
extend is a short path.
So the N queued idea doesn't
work, at all, for these
optimal paths.
So now I want to come back over
here off the side bar and

Korean: 
우리는 지금 단말노드를 이미
연장한 적이 없는 경로들만
계속 따라가는 겁니다
따라서 우리는 알고리즘을 좀 바꿔서
첫 번째 경로를 보고 
이미 연장한 적이 없다면
연장할 겁니다
왜냐하면 예시에서 봤다시피
우리는 저번에 했던 
바보 같은 짓을 반복하고 있었어요
A를 거쳐 가는 경로를 두 번 이상
연장하고 있었습니다
여기서 이 경로를 
꼭 연장해야 할까요?
아니요 왜냐하면 여기에
더 짧은 길이로 도달하는

English: 
say that we're keeping track
of all of the nodes, all of
the paths that end in nodes
unless they have already been
extended beyond that
particular place.
So we need to decorate our
algorithm here and say test
first path and extend
the first path
if not already extended.
Because you can see that in the
example I had, so far, we
did that same silliness that
we talked about last time.
We extended paths that
went through A more
than once, like so.
Would it ever make sense
to extend this path?
No because we've already
extended a path that got there

Korean: 
경로를 이미 연장했기 때문입니다
여기 이 경로는 연장해야 할까요?
아닙니다 왜냐하면 이미 여기로 오는
더 짧은 길이의 경로를 연장했으니까요
따라서 우리는 연장 리스트를 만들어서
분기 한정법에 적용할 수 있습니다
이 예시에서 어떻게 동작하는지 봅시다
그리고 케임브리지 예시를 보죠
여기는 연장 리스트를 
추가한 분기 한정법을 볼 겁니다
연장한 경로를 넣는 리스트입니다
큐에 넣은 경로들의 리스트는
여기서 쓸 수 없습니다
처음에는 똑같이 시작합니다
S에서 A나 B로 가면
길이는 3과 5가 됩니다

English: 
with less distance.
Will it ever make sense
to extend this path?
No because we've already
extended another path that
gets to be by a shorter
distance.
So if we keep an extended
list, we can add that to
branch inbound to
our advantage.
So let's see how that would work
on the classroom example.
And then we'll do Cambridge.
So this is bridge inbound,
plus an extended list.
And I do mean extended.
Not in the N queued list.
N queued list won't work here.
So let's see, I start off the
same way as I did before.
S goes to either A or B.
That's a length of 3.
That's a length of 5.

Korean: 
따라서 A를 연장하면 B나 D로 갑니다
하지만 B는 그냥 없애버립니다
미안해요
잠시만요
B를 다시 적고
경로 길이가 7과 6이 됩니다
이제 칠판을 다시 보면
어떤 것이 최단 경로인가요?
B입니다 따라서 A와 C로 연장하면
길이는 둘 다 9가 됩니다
다음 최단 경로는 뭔가요?
D입니다 따라서 G로 
가고 길이는 11이 됩니다
현재 가장 짧은 경로는 뭔가요?
연장해야 하는 것은
B이겠지만 사실
이미 우리는 B를 연장했기 때문에
다시 하지 않을 겁니다
일이 좀 줄었네요
여기는 두 개가 남았죠
근데 보면 이미 A를 연장한 적이 있죠

English: 
So I extend A. That goes to
either B or D. But B is as if
it wasn't there at all.
Oh, sorry.
Hang on.
B goes there.
And those path lengths
are 7 and 6.
And now I look around on the
board, and I say what is the
shortest path so far?
And it's B. So I extend that
to get to A and C with path
lengths of 9 and 9.
And what's the shortest
one next?
It's D. And that goes to G.
And the path length is 11.
And what's the shortest
one on the board?
The one that has to
be extended next.
That's this one that gets to B.
But I've already extended a
path that get to B. So I don't,
actually, do that extension.
So I've saved some work.
But I've got to go over here
and do these two now.
But wait.
I've already extended B. I've
already extended A, so I don't

English: 
have to do that one either.
The only one I have to do is
the one that goes to C. And
that those then to E with
a path length of 15.
And I'm done.
So if you compare this one with
a previous one, you can
see that there might be vast
areas of this tree that are
pruned away and don't have
to be examined all.
So now, just for the sake of
illustrating that, I would
like to keep track of just
one of those statistics.
The number of extensions.
So for this particular example,
case one, the number
of extensions was 835.
Why don't you see if you can
guess to yourself what it
would be if I use this concept
of an extended list.
See, I'm not going to extend
anything I've already extended
because it's guaranteed to have
a longer path length then
something that already got
to that same place.
So it makes no sense to do it.
So let me change the type to
branch-and-bound with an

Korean: 
그래서 하지 않아도 됩니다
그럼 C만 연장하면 됩니다
E로 가면 길이가 15가 됩니다
끝났습니다
이 그래프를 전에 그린 것과 비교하면
실상 많은 부분이 잘려나가
다 볼 필요가 
없었다는 것을 알 수 있습니다
이것을 더 잘 보여주기 위해서
수치를 하나 골라 따라가 봅시다
연장하는 경로의 수를 세어봅시다
우선 아까 첫 번째 예시에서는
총 835번 연장했습니다
만약에 여기서 연장 리스트를
사용한다면 어떻게 될까요?
이미 연장한 것을 
다시 하지 않을 겁니다
왜냐하면 분명히 전에 봤던 것보다
더 길이가 긴 경로가 나올 테니까요
따라서 볼 필요가 없는 겁니다
이번에는 방법을 연장 리스트를 쓰는

Korean: 
분기 한정법으로 바꿔봅시다
좀 더 잘 볼 수 있게
속도를 늦추겠습니다
한 시간이 걸릴지도 모르잖아요
그래도 아직 많은 경로를 탐색합니다
자 보세요
이번에는 835개가 
아닌 38개만 연장했어요
꽤나 큰 발전입니다
저렇게 안 할 이유가 없겠죠
이건 분기 한정법에 
한 단계를 더한 겁니다
다른 알고리즘은 아니에요
조금 수정을 해서 발전시키고
더 효율적으로 만든 것이죠
저는 이런 상황을
죽은 말의 원칙(dead 
horse principle)이라고 합니다

English: 
extended list.
I'm going to turn the speed
down a little bit so
we can watch it.
It might take the rest
of the hour.
Who knows?
Still doing a lot of work.
Still examining a
lot of paths.
Well, look at that.
Instead of 835 extensions
it only did 38.
So that's a pretty substantial
savings.
And you would never not
want to do that.
So note that that's a layering
on top of branching out.
That's not a different
algorithm.
It's an adjustment improvement
to the algorithm, and it makes
it more efficient.
So this whole thing is
based on what I call
the dead horse principle.

English: 
As soon as we figure out that
a path that goes to a
particular place can't possibly
be the winning path,
we get rid of it, and don't
bother extending it.
It's a dead horse principle.
But if we look at this example,
what's the shortest
possible length of a
path that's already
gone from S to B?
What do you think, Tanya?
Well, first of all, it can't be
less than 5 because we've
already gone that distance.
So when I say what's the
shortest length of any path
that there could possibly be
that goes from S to D. We know
it's at least 5.
But can we say something
more about it?
Especially, when we look at
these airline distances, and
note that this airline distance
is 6, and that's a

Korean: 
어떤 경로가 절대 최단 경로가
될 수 없다는 것을 
알아채면 바로 버리는 거죠
그리고 연장하지 않습니다
죽은 말의 원칙입니다
하지만 이 예시를 보면
만약 S에서 B로 이미 간 상황이라면
여기서 나올 수 있는 
최단 경로의 길이는 뭘까요?
타냐, 뭐라고 생각해요?
5보다 작을 수는 없어요
이미 그만큼을 지나왔으니까요
따라서 S에서 B로 이미 온 상황에서
나올 수 있는 최단 경로의 거리는
최소 5입니다
하지만 뭔가 더 알아낼 수 있나요?
여기 그려진 직선거리를 보면
여기는 6이고 여기는 7이 조금 넘고

Korean: 
여기도 7이 조금 넘습니다
그럼 뭘까요?
그러니까 제 질문은 
이미 S에서 B로 왔을 때
가능한 최단 경로의 길이는
무엇이냐는 겁입니다
11이겠죠?
왜냐하면 실제 직선거리보다 더 짧은
경로는 불가능하니까요
만약 A에서 G까지 직선으로 간다면
길이는 6일 겁니다
하지만 이런 길은 없죠
따라서 이는 우리가 구할 수 있는
경로의 최소 길이입니다
이제는 누적 거리뿐만 아니라
직선거리까지 보며
S에서 B로 시작한 이 경로의
최대 길이를 한정하는 겁니다
다시 프로그램을 돌려보며

English: 
little more than 7, and that's
a little more than 7.
So what do you think?
So it's gone from S to B, and
the question is what's the
shortest path that could
possibly be that had started
out going from S to B?
11 right?
Because we can't have a path
that's shorter than the
airline distance.
If there were a straight line
road from A to G, its length
would be 6.
But there isn't.
So that gives us a lower bound
on the distance that we have
along that path.
So we're using the accumulated
distance, plus the airline
distance, to give us a lower
bound on the path that we've
started off on that
goes from S to B.
Once again, let's solidify a
little bit by simulating the

Korean: 
이 부분을 확실히 이해해봅시다
저번에 그랬던 것처럼 우선은
연장 리스트를 안 쓰겠습니다
우선 두 가지를 동시에
적용하지 않을 겁니다
지금은 연장 리스트를 쓰지 않고
좀 나중에 다시 꺼내겠습니다
방금 여기서 한 것을 잊고
이번에는 이 직선거리만 사용하면
어떻게 되는지 봅시다
똑같이 시작점에서 출발하면
두 개의 선택지가 있습니다
A나 B로 갈 수 있습니다
A로 가면 누적 거리는 3이고
B로 가면 누적 거리는 5입니다

English: 
search and seeing how
it turns out.
Not just I did last time, I'm
going to forget that I've got
an extended list.
I don't want to carry both of
those things around with me at
the same time.
So forget that we've got
an extended list.
We'll bring all those back
together a little later.
So we're going to forget
what we just did there.
And instead we're just going
to use this concept of an
airline distance and
see what happens.
As before we start with
a starting node.
We have two choices as always.
We can go to A or B. And the
accumulated distance, if we go
to A, is 3.
And then accumulated distance
if we go to B is 5.

Korean: 
이번에는 직선거리까지 더해봅시다
A에서 G까지의
직선거리는 7이 조금 넘으니
총 거리는 10이 조금 넘습니다
B에서 G까지의 
직선거리는 정확히 6이니
더하면 11이 나옵니다
지금까지 계속 썼던
방법과 똑같이 해서
잠재적 경로가 가장 짧은 것을
연장합니다
이제는 S에서 G까지의 
잠재적 경로를 보는 겁니다
그럼 이게 가장 짧겠죠
A에서는 B나 D로 갈 수 있고
S, A, B의 누적 경로는 7입니다
직선거리는 6이니 총 11입니다
계산을 잘못했네요 13입니다

English: 
But now we're going to add
in the airline distances.
So the airline distance from A
to G is a little more than 7,
which is 10 plus.
The airline distance from
B to G is exactly 6.
So that gives us 11.
And following the procedure
we've all been using already
so far, we're going to extend
the path that seems to have
the shortest potential.
Now it's the shortest potential
distance S to G. So
that must be this one here.
So from A we can go to B
or D. The accumulated
distance S, A, B, is 7.
The airline distance is 6,
so that's equal to 11.
Standard arithmetic 13.

Korean: 
S, A, D의 길이는 
6 더하기 7이 좀 넘으니
아니 누적 경로가 뭐였죠?
S, A, D의 길이는 
3 더하기 3이니 6이 맞네요
뭐라고요?
학생: D에서의 직선거리는 5입니다
5가 맞네요
여기서는 직선거리가
실제 길이와 같네요
따라서 누적 길이는 6이고
남은 직선거리는 5이니
총 11입니다
자 이제 길이가 
11인 곳이 두 개입니다
퀴즈에서 나올 법한 문제인데
이렇게 여러 개 중 어떤 것이
더 나은 지 가릴 수 없을 때
사전 순으로 더 
작은 것을 고를 것입니다
B가 D보다 앞이니 B를 연장합니다

English: 
The distance S, A, D. That is
6 plus a little more than 7.
So what's the accumulated
distance?
S, A, D is 3 plus 3 is 6.
AUDIENCE: [INAUDIBLE].
PROFESSOR: What?
AUDIENCE: The airline distance
from D would be 5.
PROFESSOR: Would be 5, right.
So airline distance, in this
case, is the same as the
actual distance.
So the accumulated
distance is 6.
The actual distance is 5.
So that's equal to 11.
So now I've got two
11's on the board.
And simulating what we'd ask
you do on a quiz, we don't
know which of those is
going to be better.
They've got a tie score.
So what we're going to do is
we're going to choose the one
that's lexically least.
So B comes before D. So we'll
expand B. And that can go to

Korean: 
그럼 A와 C로 갈 수 있고
각각 경우에 대한 
거리를 계산해야 합니다
S, B, A의 누적 거리는 9입니다
그럼 9 더하기 7이 조금 넘으니까
16이 조금 넘겠네요
여기의 누적 거리는 9이고
7이 조금 넘는 거리를 더하면
여기도 16 조금 넘습니다
자 이제 봅시다
잘 돼 가고 있네요
이번에는 이거 하나만 제일 짧습니다
이걸 G로 연장하면
누적 거리는 11이고
직선거리는 0이니 총 11입니다
이는 가장 짧은 길이입니다
따라서 찾아냈습니다
이것을 분기 한정법의 
그래프와 비교해보면 확실히

English: 
either A or C. And we have to
calculate the best possible
distance that goes along
those paths.
The accumulated distance
S, B, A. S, B, A is 9.
So that's 9 plus 7 plus.
That's 16 plus.
This has an accumulated
lead of distance of 9.
Also plus 7 plus.
Also 16 plus.
Well, now let's see.
Things are shaping up pretty
well because this one has the
lowest score so far.
We extend that to
G. And now the
accumulated distance is 11.
The airline distance
is 0, so that's 11.
And that's smaller than
everybody else.
So we've got.
So now compare this one with
our branch inbound graph.

English: 
And you see, once again, we've
done considerably less work.
And that, in many practical
cases, means that instead of
taking more than the remaining
lifetime of the universe to
complete the calculation, it can
happen in a few seconds.
But let's see how it works
on the example.
So I'm not going to use
the extended list.
I'm just going to use this idea
of using a lower bound on
the distance remaining,
the airline distance,
and see what happens.

Korean: 
일을 훨씬 덜 한 게 보입니다
이게 무엇을 의미하냐면
우주의 수명보다 더 
오래 걸리는 많은 문제가
실제로 몇 초 만에 
계산 가능하다는 겁니다
예시를 통해서 다시 봅시다
우선 연장 리스트를 쓰지 않을 겁니다
방금 한 것처럼 
남은 직선거리를 보며
최단 경로의 최대 길이를 제한했을 때
어떻게 되는지 봅시다

Korean: 
이번에는 70개를 연장했네요
연장 리스트를 사용했을 때보다
썩 나아지지는 않았습니다
따라서 연장 리스트를 사용하는 게 
길이에 대한 휴리스틱을 사용하는 것보다
더 유용하다는 걸 알 수 있죠
참고로 이런 걸 허용적 휴리스틱
(admissible heuristic)이라고 합니다
만약 휴리스틱의 계산이 
실제 길이보다 항상 작다면
이를 허용적 휴리스틱이라고 합니다
이런 목적으로 
쓰기 때문에 허용적입니다
어쨌든 관찰에 따르면 연장 리스트가
이런 방법보다 더 나은 것 같네요
맞나요?
어떻게 생각하나요, 브렛?

English: 
So this time, the number
of extensions is 70.
So it didn't do quite as well
as working alone as the
extended list did
working alone.
So we immediately conclude that
the extended list is more
useful than using one of these
lower bound heuristics.
By the way, this is called
an admissible heuristic.
If the heuristic estimate is
guaranteed to be less than the
actual distance, that's called
an admissible heuristic.
Admissible because you can use
it for this kind of purpose.
So it looks like the day
extended list is a more useful
idea than the admissible idea.
Right?
What do you think about
that, Brett?

Korean: 
사기일까요?
장난일까요?
학생: 섣부른 판단 같습니다
왜 섣부른 판단이죠?
뭐가 달라질 수 있나요?
학생: 우리는 경로를 연장하고 있고
연장 리스트는 어떤 노드를 정확히
한 번만 연장하도록 보장합니다
브렛이 말한 건 이해를 할 수 없어서
뭐라고 해야 할 지 모르겠지만
하지만 제 생각에 그가 말하려는 것은
이런 상황에서는 대부분
문제에 따라 다르다는 것일 겁니다
문제가 달라지면 
다른 결과가 나올 수 있죠
그럼 한번 문제를 바꿔보면
달라질지 볼까요?
제일 왼쪽에서 출발하는 대신
이번에는 중간에서 시작해 봅시다
시작점을 여기로 옮겨보겠습니다
앗 잘못된 점을 옮겼네요
우선 기본적인 분기 한정법을 돌려서
기준점을 잡아봅시다

English: 
Am I hacking?
Am I joking?
AUDIENCE: I think you're
judging prematurely.
PROFESSOR: Why am I judging
prematurely?
What do you think it
might depend on?
AUDIENCE: The fact that we're
using extensions and the
extended list pretty much
guarantees you can only extend
each node once.
PROFESSOR: Well, Brett has sad
something unintelligible that
I can't think how to repeat.
What he meant to say,
though, was that--
[LAUGHTER]
PROFESSOR: --in these cases,
it almost always depends on
the problem itself.
If you change the problem, you
may get a different result.
So why don't we change the
problem and see if we get a
different result?
So instead of starting on the
extreme left, let's start in
the middle and see
what happens.
So I'll readjust my starting
position to be right there.
Oops, that's the wrong
adjustment.
And we might as well start
by getting our baseline
branch-and-bound without
anything.

English: 
And for that one, maybe, we'll
speed it up a little bit.
So that gives us
57 extensions.
It's an easier problem.
So let's try it with the
admissible heuristic.
That went too fast.
Wow, still pretty fast.
Six extensions.
What do you think this
number's going to be?
Closer to six or closer to 57?
Better than six?
Worse than six?
Well, let's think.
What we're going to do is we're
going to just not repeat
any movements through
the same node again.
But it's not going to
do something very

Korean: 
속도를 좀 높여야겠네요
총 57개를 연장했네요
더 쉬운 문제인 거죠
이번에는 허용적 휴리스틱을 써봅시다
너무 빨리 끝났네요
와 그래도 빠르네요
6개를 연장했어요
여기는 어떻게 될 것 같나요?
6에 가까울까요 57에 가까울까요?
6보다 적을까요?
더 많을까요?
자 생각해봅시다
우리가 할 것은 똑같은 노드를
여러 번 지나지 않는 것뿐입니다

Korean: 
왼쪽을 피해 가지 않습니다
왼쪽을 피해 가지는 못합니다
왜냐하면 목적지까지의
직선거리에 대해서는 모르니까요
이게 사실인지 봅시다
사실이네요 보세요
멍청하게도 우리가 절대
하지 않을만한 짓을 합니다
왼쪽을 탐색하고 있습니다
이번에 연장된 경로의 수는 35입니다
두 번째 경우에서는 허용적 휴리스틱이
훨씬 낫고
첫 번째 경우에서는
연장 리스트가 훨씬 좋았습니다
하지만 잠깐 이 두 가지를
동시에 쓸 수는 없을까요?
꼭 한 가지만 쓰고 싶지는 않겠죠?
두 방법 모두 우리에게 도움이 됩니다
따라서 만약
이 두 방법을 합칠 수 있다면

English: 
important for us.
It's not going to keep us out
of the left side because it
has no idea of the remaining
airline distance to the goal.
So let's see if that's
true It sure is.
Look at that.
It is, foolishly, spending
a lot of its' time doing
something we would never do.
Namely, looking over there
on the left side.
So this time, the number
of extensions is 35.
So in case two, the admissible
heuristic
does very much better.
In case one, the extension
thing does much better.
But wait a minute, would we ever
not want to use both at
the same time?
We wouldn't want to use just
one of these, right?
They both have the possibility
of doing us a lot of good.

English: 
So maybe if we put them in
harness together, we'll get
something that's even better.
And when we do that--
see here, the extended list
is a layer on top
of branch and bound.
The admissible heuristic
is another layer on top
of branch and bound.
If we put those together, we get
something called A star.
So A star is just branch and
bound, plus an extended list,
plus and admissible heuristic.
So let's go back to our original
problem and try A
star on that.
We're running this at a pretty
slow speed because we're
expecting it to be a lot more
efficient than the original
branch and bound.
And sure enough it is.
The number of extensions
is 27.
So look at that.
A lot better than either of
those working independently.
Now I can stick the thing in
the center and see what
happens then.

Korean: 
더 나은 것을 만들 수 있겠죠
이걸 해보면
여기 보면 연장 리스트는
분기 한정법에 한 층을 더한 것입니다
허용적 휴리스틱 또한
마찬가지입니다
이 모든 것을 다 더하면 
A* 알고리즘이 나옵니다
A* 알고리즘은 분기 한정법에
연장 리스트와 
허용적 휴리스틱을 추가한 것입니다
자 예시로 돌아가서
A* 알고리즘을 적용해봅시다
이렇게 천천히 보는 이유는
기본 분기 한정법보다 훨씬
효율적이기 때문입니다
연장된 경로의 수는 27입니다
자 보세요
각각 따로 쓰는 것보다 훨씬 좋습니다
이번에는 중앙에서 출발하면
어떻게 되는지 봅시다

English: 
So in this particular case,
the extended list didn't,
actually, help us because our
admissible heuristic was
channeling us so tightly
toward the
goal it didn't matter.
So it all depends on the nature
of the space that
you're trying to explore.
By the way, you know how
the whole works, right?
So what you want to do is
you want to extend the
first path and sort.
But not just by accumulated
distance.
Sort by accumulated distance
plus admissible heuristic.
But what are the
theoreticians?
You must be complaining.
Sort's expensive.

Korean: 
자 6개네요
이번 문제에서는
연장 리스트가 도움이 되지 않았습니다
왜냐하면 허용적 휴리스틱이 이미
최선을 다해서
목적지로 이끌었기 때문이죠
따라서 이 모든 것은 보고 있는
공간에 따라서 달라지는 겁니다
참고로 둘을 합하면 
어떻게 작동하는지 알죠?
해야 할 것은 첫 번째 경로를
연장하고 정렬하는 것입니다
하지만 누적 길이로 
정렬하는 것이 아니고
누적 길이에 허용적
휴리스틱을 더한 값으로 합니다
이론 주의자라면
불만이 있을 수도 있어요
정렬하는 것은
많은 비용이 듭니다

Korean: 
정렬을 꼭 해야 할까요?
아니요 사실 안 해도 됩니다
뭘 해야 하나요?
학생: 가장 작은 것만 알고 있으면 됩니다
가장 작은 것만 따라가면 됩니다
따라서 실제로 정렬할 필요는 없습니다
불필요한 계산이죠
따라서 첫 번째 경로가 아닌
가장 짧은 경로를 확인하는 겁니다
완성됐네요
A* 알고리즘이 완성되었습니다
이제 여러분이 집에 가도 될 것 같지만
사실 안됩니다
왜냐하면 저는 지금부터
허용성에 관해 얘기할 것이거든요
시험에 내기 좋은 것들입니다
사실 이 허용적 휴리스틱이라는 것은
때에 따라 문제가 될 수 있습니다
그러지 않을 것 같죠

English: 
Do we actually need to sort?
No, we don't actually
need to sort.
What do we to do?
AUDIENCE: We just need to keep
track of what's the minimum.
PROFESSOR: We just need
to keep track
of what's the minimum.
So we don't need to, actually,
do that sort.
That's an unnecessary
computation.
So instead, we can test, not
the first path but the
shortest path.
And now you have it.
Now you have the whole
of A star.
And now you can go home, but I
don't think you should because
I'm about to show you that this
idea of admissibility,
actually, leads to certain screw
cases that we're very
fond of asking about on exams.
So it turns out that the
admissible heuristic, in
certain circumstances, could
get you into trouble.
It doesn't look like it could
because, logically, nothing

Korean: 
제 설명이 논리적으로 
이상하거나 의심스럽지 않았을 겁니다
이는 제가 지도를 사용했기 때문입니다
사실 지도를 볼 때는 이 허용성은
최적 탐색을 위한 
굉장히 좋은 방법입니다
트래비스, 검색은 
지도에 관한 것이었나요?
검색은 지도에 관한 것이 아니죠
따라서 유클리드적이지 않은 공간을 다룬다면
문제가 생길 것입니다
다음 예시를 통해 보여주겠습니다
거대한 지도나 그래프가 아닙니다
S에서 A로 올라가거나 
B로 내려갈 수 있습니다
그리고 이 둘은 C에서 합쳐집니다
마지막으로 목적지 G로 연결됩니다
실제 거리는 1, 1, 1, 10입니다

English: 
I've said seems strange
or questionable.
But that's because I've been
working with a map.
And it turns out that if you
work with a map then
admissibility is a perfectly
sound way of
doing an optimal search.
But, Travis, is search
just about maps?
No, search is not
just about maps.
So we may have non-Euclidean
arrangements that will cause
us trouble.
So I'd like to illustrate that
with the following example.
It's not going to be a large
map or a large graph.
S, then go up here to A or
down here to B. Then they
merge at C. And then they go
out here to the goal, G.
And the actual distances
are 1, 1, 1, and 10.

English: 
And over here, we'll
make that 100.
So it's a kind of oddly
constructed map, but it's
there because we need a
pathological case to
illustrate the idea.
Now that's the actual
distances.
And if we did branch and down
with an extended list,
everything would
work just fine.
But we're not.
We're going to use an admissible
heuristic.
And we're going to say that
this guy has an estimated
distance to the goal of 100.
This guy is 0.
And this guy is 0.
Now, 0 is always an
underestimate of the actual
distance to the goal, right?
So I'm always free to use 0.
Is that 100 OK?
Yeah because the actual
distances is 101, so it's less
than that the actual distance.
So it's OK as an admissible
heuristic.
So these numbers that I put up
here, together, constitute an
admissible heuristic set of
estimates to the goal.

Korean: 
그리고 여기는 100입니다
조금 이상해 보이는 지도이지만
최악의 경우를 보여주기 위해
이렇게 그렸습니다
저것은 실제 거리입니다
만약 연장 리스트로
분기 한정법을 썼다면
잘 동작했을 것입니다
하지만 우리는 허용적 
휴리스틱을 써볼 겁니다
여기서 목적지까지의 예상 거리를
100이라고 하고
여기는 0
여기도 0이라고 합시다
0은 목적지까지의 실제 거리보다
적게 잡은 것입니다
따라서 0은 언제든 쓸 수 있습니다
100은 괜찮을까요?
네 왜냐하면 실제 거리는 101이니까요
실제 거리보다 작습니다
따라서 허용적 휴리스틱입니다
여기 적은 숫자들은
목적지까지 예상 거리의 
허용적 휴리스틱 집합입니다

English: 
So now, let's just simulate A
star and see what happens.
So first of all, you start with
S, and that can either go
to A or B. The actual distance
is 1 plus an estimate on the
remaining distance.
That gives us 100 plus 100.
That's equal to 101.
If we go to B instead, the
actual distance is 1 plus the
heuristic's distance is 0,
so that's equal to 1.
OK, good.
So now we know that we
always extend the
shortest path so far.
Did I goof this, or are
you asking a question?
AUDIENCE: [INAUDIBLE]?
PROFESSOR: Yeah, when I say
actual, it's the actual
distance that you've traveled.
AUDIENCE: But that's
[INAUDIBLE].
PROFESSOR: So wait a second.

Korean: 
여기서 A* 알고리즘을 
써보면 어떻게 되는지 봅시다
우선 S에서 시작하면
A나 B로 갈 수 있습니다
지금까지 온 거리는 1이고
여기에 목적지까지 
예상 거리인 100을 더하면
101이 됩니다
만약에 B로 간다면 온 거리는 1이고
예상 거리인 0을 더하면 1입니다
좋아요
우리는 항상 가장 짧은 경로를
연장합니다
제가 실수했나요? 
아니면 질문인가요?
학생: 실제 거리는
물리적인 거리를 말하나요?
네 여기서 실제 거리란
지금까지 온 실제 거리를 의미합니다
학생: 하지만 S, A, C, B는-
자, 봅시다
S에서 A로 가면

English: 
If I go from S to A,
the actual distance
I've traveled is 1.
AUDIENCE: I meant like,
does the map--
PROFESSOR: So now I'm taking
the sum of the actual
distance, plus the estimated
distance to go.
AUDIENCE: All right.
I'm just wondering if the
original map has to be
[INAUDIBLE].
PROFESSOR: See this
is not a map.
She was asking if the map has to
be geometrically accurate.
See, this could be a model of
something that's not a map.
And so, I'm free to put any
numbers on those links that I
want, including estimates, as
long as they're underestimates
of the distance along
the lengths.
So this tells me that my
estimated distance
here, so far, is 1.
So I'll, surely, go down here
to C. And if I go to C, then
my accumulated distance is 11.
And my estimate of the remaining
distance is 0.
So that's a total of 11.

Korean: 
실제 이동 거리는 1입니다
학생: 제 말은 지도에서-
지금 실제 이동 거리와
앞으로 가야 할 예상 거리를
더하고 있습니다
학생: 지도상에서 물리적으로
학생: 그렇게 보여야 하지 않나요?
이것은 지도가 아닙니다
학생은 지도를 정확한 
비율로 그려야 하는지 물었습니다
이것은 지도가 아닌 
다른 것을 상징할 수도 있습니다
따라서 아무 숫자나 적어도 됩니다
예상 거리가 실제 남은 거리보다
짧기만 하면 됩니다
여기서 알 수 있는 것은
이 경로의 예상 길이는 1입니다
따라서 여기서 C로 가면
총 누적 거리는 11이 됩니다
C에서의 남은 예상 거리는 0입니다
따라서 총 11이 됩니다

Korean: 
계속 같은 휴리스틱을 써보면
여기서 누적 거리와 예상 거리의 합이
가장 짧은 것은 무엇인가요?
여기서 누적 거리와 남은 예상 거리의
합은 101입니다
여기는 11입니다
따라서 이쪽을 연장합니다
그럼 목적지에 도달합니다
총 누적 거리는 111에
0을 더하니 111입니다
이것은 최단 경로가 아닙니다
아직 확인 작업을 하지 않았죠?
A를 연장해야 하는데
해보면 B로 갑니다
누적 거리는 2 더하기-
미안해요 S, A, C네요
누적 거리는 2이고

English: 
So now I'm following my
heuristic again and saying
what's the shortest path on
a base of the accumulated
distance plus the estimated
distance?
Here, the accumulated
distance plus the
estimated distance is 101.
Here, it's only 11.
So plainly, I extend this guy.
And that gets me to the goal.
And the total accumulated
distance is now 111 plus 0
equals 111.
And that's not the shortest
path, but wait.
I still have to do my
checking, right?
I have to extend A. I when I
extend A, I get to B. And now,
when I get to B that
way, my accumulated
distance is 2 plus my--
oh, sorry.
S, A, C.
My accumulate distance it 2.

English: 
My estimated distance is 0,
so that's equal to 2.
So I'm OK because I'm still
going to extend
to this guy, right?
Wrong.
I've already extended
that guy.
So I'm hosed.
I won't find the shortest
path because I'm
going to stop there.
And I'm going to stop there
because this is an admissible
heuristic and that's not good
enough unless it's a map.
It's not good enough for this
particular case because this
is not geometric.
This cannot be done as
a map on a plane.
So that's a situation where what
I've talked to you about,
so far, works with
branch-and-bound.
Works with branch-and -bound
plus an extended list.
But doesn't work when we added
an admissible heuristic.
So if we're going to do this in
general, we need something
stronger than admissibility,
which works only on maps.
And so the flourish that I'll
tell you about here in the

Korean: 
남은 예상 거리는 0이니 총 2입니다
아직 괜찮아요
이 경로를 계속 연장할 거니까요
아니죠
이미 이 노드는 연장한 적이 있습니다
곤란해졌습니다
최단 경로를 찾을 수 없게 되었습니다
여기서 멈추니까요
여기서 멈추는 이유는
허용적 휴리스틱은 지도가 아닌 
문제를 풀기에 충분하지 않기 때문입니다
여기서 충분하지 않은 이유는
평면의 지도처럼 비율에 
맞춰 나타낼 수 없기 때문입니다
지금까지 봤던 예시는 분기 한정법을
사용할 수 있는 예시들이었죠
분기 한정법은 연장 리스트와 함께 
사용할 수는 있지만
허용적 휴리스틱과는 함께 쓸 수 없습니다
지도 외에 상황에서도
적용할 수 있는 것을 만들려면
허용성보다 더 강한 것이 필요합니다
따라서 오늘 남은 시간 동안은

Korean: 
어떻게 이 알고리즘을
발전시키는지를 보여줄 겁니다
현재까지는 허용성밖에 없었습니다
이것을 수학적 기호로 표현해본다면
허용된다는 것은
어떤 노드 X와 목표 간의 예상 거리가
실제 거리보다 작거나 같음을
만족한다는 것입니다
이게 허용성의 정의입니다
휴리스틱이 이를 
만족하면 허용된다고 합니다
A* 알고리즘은 
지도에서 잘 동작했습니다
하지만 지도가 아닌 경우
더 강한 조건이 필요합니다
바로 일관성이라는 겁니다

English: 
last few seconds of today's
lecture is to add a refinement
as follows.
So far, we've got
admissibility.
And if we want to write this
down in a kind of mathematical
notation, we could say that
it's admissible if the
estimated distance between any
node X and the goal is less
than or equal to the
actual distance
between X and the goal.
That's the definition
of admissible.
As long as heuristic does
that it's admissible.
And A star works
if it's a map.
But for that kind of situation
where it's not a map we need a
stronger condition, which
is called consistency.
And what that says is that the
distance between X and the

English: 
goal minus the distance between
some other node in the
goal, Y. Take the absolute
value of that.
That has to be less than or
equal to the actual distance
between X and Y.
So this heuristic satisfy the
consistency condition?
Well, let's see.
Here the guess is 100.
Here it's 0.
So the absolute difference
is 100.
But the actual distance
is only 2.
So it satisfies admissibility,
but it doesn't satisfy
consistency.
And it doesn't work.
So you can almost be guaranteed
we'll give you a
situation where if you
use an admissible
heuristic you'll lose.
And if you use a consistent
heuristic, you'll still win.

Korean: 
이는 노드 X에서 목표까지의 거리에서
다른 노드 Y와 
목표까지의 거리를 뺀 것의
절댓값이 노드 X에서 Y까지의
실제 거리보다 작거나 
같다는 것을 의미합니다
이 휴리스틱은 
일관성 조건을 만족하나요?
한번 봅시다
여기서는 예상 거리가 100이고
여기는 0입니다
따라서 차의 절댓값은 100입니다
하지만 실제 거리는 2죠
따라서 허용성은 만족하지만
일관성은 만족하지 않아
쓸 수 없습니다
시험 문제 중에 분명히
허용적 휴리스틱만 쓰면
안 되는 상황이 나올 겁니다
일관적 휴리스틱까지 쓰면 잘 되겠죠

English: 
So how can we bring this
back into the fold?
Well, we can't use
that heuristic.
It's no good.
But if this heuristic estimate
of the goal were 2, then we'd
be OK because then it would
still be admissible.
But it would also
be consistent.
So the bottom line is that you
now know something you didn't
know when you started out
two lectures ago.
You now know how MapQuest and
all of its' descendents work.
Now you can find an optimal
path, as well as a
heuristically good path.
You see that if you don't do
anything other than branch and
bound it can be extremely
expensive.
And you can even invent
pathological cases where it's
exponential and the distance
to the goal.
So because it can be so
computationally horrible, you
want to use every advantage
you can, which, generally,
involves using an
extended list.
As well as--
no laptops, please.
It still holds.
No smoking, no drinking,
and no laptops.

Korean: 
여기서는 어떻게 적용할 수 있을까요?
저 휴리스틱을 쓸 수 없죠
쓸모없습니다
하지만 여기서 예상 거리가 2라면
괜찮을 겁니다
허용적인 동시에 일관적이니까요
이제 여러분은 지지난 수업까지
전혀 몰랐던 내용을 알게 되었어요
이제 맵퀘스트(MapQuest)같은 
것이 어떻게 동작하는지 알 수 있습니다
최적 경로도 찾을 수 있고
경험적으로 좋은 경로도 찾을 수 있죠
보다시피 단순히 분기 한정법만 쓴다면
굉장히 비효율적일 수 있어요
목적지까지 거리에 관하여
기하급수적인 시간이
걸리는 경우도 있을 수 있죠
이렇게 연산 비용이 엄청나기 때문에
가능한 모든 방법을 동원해야 합니다
연장 리스트가 가장 일반적이죠
그리고 또-
노트북 금지입니다
아직입니다

Korean: 
흡연, 음주, 노트북 모두 금지입니다
가능한 모든 방법을 총동원해야 합니다
연장 리스트나
허용적 혹은 일관적 휴리스틱을
적절하게 사용해야 합니다
시간이 됐으니 오늘 
수업은 여기까지 하겠습니다
엘리엇, 수업 끝나고 질문해요
지금 나와서 질문하면 되겠네요

English: 
So you're going to use all
the muscles you can.
And those muscles include using
an extended list and an
admissible or consistent
heuristic, depending on the
circumstances.
And so, I think we'll conclude
there since our time is up.
And Elliot, you can ask a
question after class.
Why don't you come up
and ask it now?
