PATRICK WINSTON: Many of you, maybe most of you, will never
have to work another search problem by hand in your
natural life.
Others will want to take another run
at it on the final.
I've been much criticized for this way of doing
grading in the class.
But the way I look at it is that the relationship between
students and instructors ought to be less adversarial than it
used to be in the good old days when I was a student.
I especially remember an examination we took--
all of us took-- on Rayleigh scattering.
That was 803, I think.
And back in the old days, we had to take four physics
courses, not just two.
And we had to take four math courses, not just two.
Back in the days when--
well, I was going to say men were men.
But most of us were men in those days.
I think we only had 20 women in our class.
Anyway, we had a quiz on Rayleigh scattering.
And I thought, well, this is pretty hard.
And then I got my quiz back.
26.
I thought, well, I've been found out.
I'm going to flunk out.
My father will make me go to law school.
I'll never attract anyone to marry.
Horrible things will happen.
Then the instructor announced the class average was 18.
I was two standard deviations above that.
They gave us the same exam two weeks later,
and accounts vary.
Some people say that the class average went down.
Anyway, today we're going to study some stuff.
We're going to study some stuff that will make it
possible for you to understand how you can do that
computation in just a couple of seconds, even with the
delays introduced by the redrawing.
Now this particular program--
I'm not real sure and I don't have a proof, but I think it
will take more than the lifetime of the universe to
find a legitimate coloring of the continental United States.
But by the end of the next class, you'll see how to do
that lickety-split in just couple of seconds, even with
the re-display delays.
Now we could, of course, do this in two ways.
One way is I could start off by saying, let C be a
constraint satisfaction problem and just
give you the result.
And anybody can do that.
That's great.
And you needed to learn some stuff that way.
But there are some things that you needed to learn, I think,
a different way.
And that different way involves my telling you the
story of how it all came to be.
This is a new field, pretty much, and therefore I know
most of the people in it.
And I know all of the people who did the work that I'm
going to tell you about today.
I'm going to tell you a little bit about the struggle for
coming up with the ideas that led to one of the most
powerful methods you'll learn about in the subject.
It all has to do, originally, with an attempt to make a
computer capable of seeing.
And everybody said to themselves, well, let's start
with seeing simple things, like children's blocks.
And so Adolfo Guzman, a graduate student of Marvin
Minsky's, was charged with the summer project, which led to
his Ph.D. thesis, of writing a program that could look at a
line drawing and determine how many objects
are in the line drawing.
So for example, there behind my outline is a line drawing.
And you believe instantly that there are two objects there,
even though in some deep sense, it's ambiguous.
There are all sorts of ways that you could, through
trickery, arrange something with even seven objects that
look that way.
But most people would say there are two objects.
So Guzman set about the problem of figuring
out how to do that.
And then his work was followed by Dave Huffman.
And his work was followed up by Dave Waltz.
And his work was followed up by Jane [? Froyter ?], who's
not listed there quite yet.
And I want to tell you a little bit of story how that
all happened.
So Guzman took a lot of pictures.
He went to Boston Baby, the precursor to Toys R Us,
purchased a large block set on a government contract, and
went about the business of taking a lot of pictures of
them so he'd get a feel for the domain.
And eventually he decided that he could build a program that
could determine that there are two objects here by using the
lines as a quanta of evidence about which faces belong
together in an object.
So he said, after studying these for a long time, that
these drawings tend to have a lot of arrow-type junctions
and a lot of fork-type junctions.
And when you see an arrow, it's a little bit of evidence
that the objects on either side of the shaft are the
same-- the face on either side of the shaft belong to the
same object.
And over here, the fork-type junction suggests that
pairwise, three pairs of faces seem to
belong to the same object.
So with that idea, he could come back to a drawing like
this and start decorating it with these so-called links,
these quanta of evidence that faces
belong to the same object.
And if I've done it right, you get something
that looks like so.
It's a little hard to see what's going on
on the drawing itself.
So let me number these.
Now I have an easier-to-deal-with picture.
There are two links between 1 and 2 and 1 and 3.
One link between 2 and 3.
One between 2 and 4.
Two here.
And one each from all of these.
So Guzman produces this evidence for how the problem
ought to be solved and then he begins to think about various
ways of using the evidence.
So he could, and did, decide that one link is enough to
presume that the faces belong to the same object.
And you can see that that's a little bit too liberal.
Because that says that the whole
thing is just one object.
So Guzman rejected the one-link theory and went to
the two-link theory.
And the two-link theory says, oh, well, let's see.
If we insist that two links should be there before we are
willing to decide that it's the same object, then these
three faces are pulled together into one object.
These three are pulled together into one object.
But alas, 7 doesn't share two links with anything, so it's
left dangling out there.
So plainly, the two-link theory is too conservative.
So that as you would soon discover in any [INAUDIBLE]
project, would lead you to a third theory, which is two
lengths repeated.
So now that we've formed these super regions, we can come
back and say we'll merge super regions if they're connected
together by two or more links.
So nothing new happens up here.
But this super region is joined at 7
by two or more links.
So it pulls everything together like so.
So that worked fine.
Well, it didn't work fine.
There were lots of examples of situations
where it didn't work--
in situations that were considered nonsensical by us
humans because it seemed silly, the kind of conclusions
that it reached.
So when Guzman presented this work in his Ph.D. thesis
defense, it's said--
and who knows if it's true-- but it's said that Marvin
Minsky thought it was great work and we
should make him a professor.
It happens that Dave Huffman was also on the committee and
said that it was ad hoc and the thesis should be rejected.
So we had two polar opposites of impressions there.
Dave Huffman, by the way--
you've heard that name before, I imagine.
It's the guy who invented Huffman coating as a term
paper in a information theory course taught by Bob Fano.
He got an A, they say.
So Huffman didn't like it.
He thought it was a little bit too ad hoc.
It was too heuristic.
It didn't take advantage of anything we
might know about physics.
And so people began to say, well, why does it work?
And when does it not work?
And that's just about the best question you can answer in a
situation like this.
And by playing with some more of Guzman's pictures and
reflecting on them, it turned out that it worked because the
world is full of three-face junctions.
Or let me say three-face vertexes because they're out
there in the world.
We'll reserve the word junction for something else.
And three-face vertexes generally project into either
an arrow or a fork.
So Guzman's whole program worked on the weak backward
conclusion that if you see one of those, it probably came
from one of these.
So this is in the drawing.
That's in the world.
So by a process that's neither deduction or induction, but
rather abduction, you see one of those guys.
And you say, well, they often come from three-face vertexes
in the world, so if you see one, it probably came from a
three-face vertex in the world.
That's abduction.
So once Huffman saw all that, being a mathematician, he
began to think about how one might develop a different and
better theory.
But we have to recognize that all this work started off with
the efforts of Guzman, who was an experimentalist.
And Huffman was a mathematician.
So naturally, they approached the problem differently.
So Huffman says, I'm not going to concern myself too much
with the actual problem that Guzman was trying to solve.
Rather, I'm going to work in a very simple world, which I can
deal with mathematically.
So he decided that he was going to work in a world which
had several characteristics.
Characteristic number one was that the world would be
presented in general position.
That is to say, no screw cases.
So if you see a cube, it's going to look like this.
And it's not going to look like this.
So that's out.
And this is in.
And the idea here is that that's not general position,
because if you perturb your point of view a little bit,
you'll change those T junctions
into forks and arrows.
So we know it had to deal with those kinds of
weird kinds of cases.
So that's presumption number one.
Presumption number two is that we're going to be dealing with
a world that's trihedral.
That means all vertexes out there are going to be formed
from three planes.
So you're going to have the intersection of three planes.
So how many kinds of junctions can you see if the world is
composed that way is the question that Huffman sent
himself upon.
The next assumption was that there are going to be four
kinds of lines.
See, Guzman only recognized two kinds of lines-- lines
that have a length and lines that don't have a link.
And they don't have very much to do with the physical world.
So Huffman says, I want to get the constraint out of the
physical world.
So I'm going to deal with four kinds of lines--
concave, convex, and boundary.
So each of those kinds of lines is going to
have its own notation.
We'll call the convex lines plus, the concave lines minus,
and a boundary lines are going to get an arrow on them,
depending on which side of the object--
which side you would see the object if you walk along the
direction of this little arrow.
STUDENT: Question.
Which is concave and which is convex?
You said something and you wrote the opposite.
PATRICK WINSTON: Yeah, sorry.
Thank you.
So concave, convex, and boundary.
Thank you.
So this down here, that's a concave line.
And that would get a minus label.
Oh, I don't know.
These lines you're seeing here, if there were stuff
behind them instead of me, then all those
would be convex lines.
Many times you see a boundary line.
For example, now you don't see both sides of that line down
here at the bottom.
So that's a boundary line.
And the arrow would point in that direction, so as to keep
the stuff of the object on the right as you walk along a kind
of mathematical convention.
So three kinds of lines, four kinds of labels.
And there's some things left out.
That's because Huffman wanted to keep his problem simple,
something he could manage by hand.
What's left out?
Cracks are left out.
Shadows are left out.
There's a presumption that there's nothing of interest
here with respect to that.
So let's have a little vocabulary before I go on.
And I'll try to stick to it.
But there's the stuff out there, and that consists of
vertexes and edges.
And over here, on the blackboard, we'll have
junctions and lines.
And I'll try to stick to that vocabulary.
All right?
Yes, Christopher?
STUDENT: Didn't you say there were four types of lines?
PATRICK WINSTON: Yeah, there are four kinds of--
the question is, didn't I say there were
four kinds of lines?
There are three kinds of lines, but since we can label
a boundary line in either direction,
we have four labels.
OK?
It depends on which side of the object the stuff is on.
And that will be clear, I think, as
soon as I do an example.
So one, two, three assumptions.
A little bit of vocabulary.
So we have the possibility of making a complete catalog.
This is so simple.
We have the possibility of making a complete catalog of
all the ways that lines can come together to form a
junction with respect to these four labels.
Now at first you might say, oh my god, that will take a
couple of years.
But maybe it won't take a couple of years.
And in the end, to perhaps your surprise, you discover
that there are only 18 ways to arrange the labels around a
junction in this world.
Everything else is excluded.
If you have something that's not in the set we're going to
produce now, it can't be built with trihedral vertexes.
So I've listed up there six L's, five forks, four T's, and
three arrows.
Let's see if I can figure out why there are those 18 and
nothing else.
Well, if we have three vertexes coming together, that
means there are eight octants, right?
And the stuff of the object may fill 1, 2, 3, 4, 5, 6, 7
or all eight octants.
Now of course, if you fill all eight
octants, there's no junction.
So we don't consider that case.
If we don't fill any the octants, there's no junction.
There's no vertex.
So we don't consider that case.
But if just one of the eight octants is filled with stuff,
then we can look at it from any of the
seven remaining octants.
So right now, you're looking at it from one of the seven
remaining octants.
And if I'm not mistaken, you're going to see a
fork-style junction there, right?
And you're going to see a fork-style junction in which
all of the edges are convex.
An unfortunate selection of names, because the linguists
tell me that we index all of our words
by the first forename.
And those have the same first forename, so
they're easily confused.
So here's a fork-style junction.
And we know that one way that's legitimate for the
lines to come in is with four pluses.
Now that's not the only way you can see that.
And here's another way.
There's an L-style junction, right?
And both of those are boundary lines.
And we want to draw the boundary line indicators on
there so that if we walk along the arrows, the stuff of the
object would be on the right.
So I suppose, to make it easier to me do my drawing, I
should look at it this way.
And then I would say, well, that has to be a legitimate
way of labeling a junction.
Are there any more?
Well, there's seven altogether, but many of them
are the same.
There is one more that's a little different, though.
I can hold this guy up like so.
And if I'm holding at the right angle for you, you see
an arrow-style junction, right?
Two boundaries, and the barb is convex.
So in this particular case, I've got that.
I've got that.
And I've got a plus there.
And that's there happen to be for the one octant filled with
stuff case.
I happen to be able to reverse this, though.
And here's the seven octants filled case.
So that tells us that it's possible to have a vertex out
there in a space that when reduced to a junction on the
board deserves three minus labels, because all of these
that you're seeing now are concave.
So another fork-style junction looks like so.
And since there's only one octant to look at from, that
completes our analysis of the seven octants filled case.
Now we have a couple of other possibilities here.
We might have five octants filled with stuff.
So that means there are three octants that we can look from.
So let's suppose that these little chalk
pieces are little people.
And they're looking at this junction down there, where
this white object is fused with the table.
I'm fusing it with the table because I want to consider it
to be one object.
We can view it from the three objects indicated by those
three little chalk pieces.
And ask ourselves, well, in the event that we look at it
from those three places, what do we see?
And if we look at it from the perspective of the piece of
purple chalk--
I'll have to walk around and be sure--
looks like an arrow junction with two
concaves and a convex.
Did I get that right?
So I'm looking at it from this perspective.
It's an arrow.
This is convex and these two are concave because I fused
the paper box with the table.
Looking at it from the perspective of this blue guy--
let me rotate it so you can have a better understanding of
the blue guy--
it looks like a concave line and a boundary.
So it's an L. And this one is a boundary.
And that's concave.
And by a kind of symmetry, we're also going to get that
one from the other side, the third of the three octants.
Well, we're off and running.
But we still have an awful lot to go.
And we could manage to deal with it by thinking about this
object once again.
But instead of this situation out here, to turn it around
and look at this vertex.
Think about the junctions that it can produce.
I think I'll do that for you.
Because you really have to play with this and move it
around a little bit to see how things are going to look.
So let me think about how that's going to work out.
I know that one of the possibilities is going
to look like so.
I might as well not hide that from you.
It's going to be what happens when there's a little man
looking up at the junction.
And this one's going to be minus.
And now we've got two more that are just like that.
Look like so.
And you say, oops.
You say, aren't those just a rotational
variance of each other?
And the answer is sure.
I write them all down, because if you get a fork-style
junction in space, there are three different ways it could
be labeled.
Depending on which of the lines you put
the minus label on.
So that takes care of that.
And then there's one more of these fork-style junctions.
And that's plus, plus, minus that derives from this case.
And there appear to be three more of
these L-style junctions.
And they look like, let's see, plus, then plus.
I'm having to think this through as I go.
And then--
and that's it.
Well, what about the T's?
Well, in this world, the only way you can get a T is if some
object is obscuring another object.
And if an object is obscuring a line, it can
be any line at all.
So that's why the four remaining ones are easy beyond
description to label.
And of course, the cross pieces of the T are all
boundary lines, with the obscuring object on the right.
Now let's see.
We've taken care now of the one, three, five, and seven
octants filled cases.
What about two, four, and six?
Well, it turns out you can have vertexes that are made
that way too.
But they will have more than three faces.
They'll have six faces.
They'll be like what happens when an object comes together
at a point, like so.
Like that.
You can play with it a little bit and see that if you have
two, four, or six objects filled with stuff, there are
more than three faces.
So we're going to ignore those.
So our constraint is going to be a little more severe than
would be suggested by the terminology Huffman uses.
They're going to be trihedral all right, but they're also
going to be three faces.
So we went to a lot of work there.
But what have we discovered?
We've discovered that in this world, this is a complete,
100% percent, nothing excluded, nothing else can be
there, catalog of all possible ways the junctions can have
line labels arranged around them.
There's nothing else in this world.
So that's a very powerful constraint.
So now let's see what we can do with it.
This example is usually more fun when the Red Sox are doing
better, but they're not.
Yet we'll use it any way.
We're going to start with an object that
looks like home plate.
And I'll ask you the question.
Can you build one of those?
I don't know.
Let's give it a shot.
We're going to assume that this object is hanging,
floating in space.
So therefore, all of these lines around the boundary are
boundary lines, like so.
Now that gets us off to a good-- it's just hanging in
space, Christopher, all right?
You look confused.
It's just hanging in space so that all the lines around the
edges are places where you see only one side has stuff on it.
So that enables us to just quickly run around the
periphery and put arrow labels on all those outside lines.
Now we have a lot of arrow-style
junctions on the boundary.
That's commonly the case.
So we can run over to our catalog of all possible
labels, and we see that if we have an arrow with boundaries
on its barbs, there's only one of those.
So I know instantly that there must be a plus on the shaft.
So we can come back here and take all these arrows here.
And label them with plus lines on their shafts.
Now a line can't change its nature along its length.
So if it's a plus line on one end, it's going to be a plus
line on the other end.
All right?
So what else can we do?
Here deep inside is a fork-style junction.
It's got convex markers on both of those two lines.
So we go over to our catalog and say, what can we say about
it, given that there are pluses on two of its lines?
Whoop, that means that the third one has to
be a plus as well.
And now we're done.
We've labeled everything.
Except--
look at this.
What about that guy?
There's an L-style junction with pluses on
both of its two lines.
Is there one of those in my catalog?
No.
Therefore, I haven't passed a necessary condition for
constructability in the world that I've made.
You can't make it.
You can't construct it.
So Huffman's ideas give us a way of testing something to
see if it's not possible for it to be in this world.
If it passes the test, does that mean it's possible?
No.
It's a necessary but not sufficient condition.
On this one--
blue-collar occupation--
on this one, maybe it will help if we
put in another line.
For example, we could put a line like so.
You feel better about it now?
I don't know.
Let's see.
This has to be a plus for the same argument we used on
several other arrows before.
That gives us an arrow-style junction here with a plus on
everything.
Is there such a junction label?
No.
We lose.
It doesn't help.
You think you can make it, but you can't.
STUDENT: You could actually construct it as
a 3-D object, though.
PATRICK WINSTON: He thinks you can
construct it as a 3-D object.
Let me show you the next example, Christopher.
Consider this example.
Can you make that?
Your intuition is yes.
So let's label it.
Oh, I've already lost.
We just boost that up a little bit to make the
situation more clear.
So already, I've got myself in a situation where I can't
label that.
But you feel like you can make it.
So what's wrong?
What's wrong is--
what, Elliott?
STUDENT: You have an obscured--
or, we're presuming that we have an obscured [INAUDIBLE]
alley from the upper-left corner to the [INAUDIBLE].
PATRICK WINSTON: Putting a little interpretation on what
Elliott has said.
If you look at this situation back here, you get a
four-faced junction there.
So you can make it.
But not with three faces.
So some of these look like you could make it.
But they can't be labeled because you need more than
four faces at a junction.
And we can carry that idea back here.
You can make this OK.
But this junction, you've got two in the back and two here.
So it has four faces.
Same idea.
So that's Guzman's contribution.
That's Huffman's contribution.
Huffman was a mathematician.
But we wanted to build robots back in those days.
And neither one of these guys solved the problem of dealing
with natural objects with shadows, with cracks, with
more than trihedral vertexes in space, and
what to do about that?
Well, that was a problem that another graduate student,
David Waltz, set about to solve.
So Waltz decided that he would not be content unless he added
cracks, shadows, non-trihedral vertexes.
Uh--
yeah, non-trihedral vertexes.
And light.
These considerations led Waltz to go from
four labels to 50-plus.
Because he had to pack a lot of information into each of
the labels he put on a line.
What kind of light was on the right?
What kind of light was on the left?
Maybe it's a crack.
Maybe it's a crack that--
all sorts of considerations.
Here we had 18 ways that lines can come
together around junctions.
That went to thousands of junctions in Waltz's world.
So here's Guzman.
He writes a program that sort of works.
Down below, we have Huffman.
Huffman, who has a theory but solves the wrong problem.
So here comes Waltz, and he's trying to solve the right
problem with a satisfying theory that has a
generalizable principle.
So when we get all through this, we'll talk about
criteria for success.
And we'll conclude that to have a really successful
thing, you need a problem, to start with.
You need a method that works.
And you have to show that it works
because of some principal.
So Guzman had the problem and something that worked.
Huffman had a method which worked on the wrong problem.
And it's left to Waltz to bring it all together.
So Waltz does all this work.
And now he has, instead at 18 labels, he has thousands.
Instead of four-line labels, he has more than 50.
So naturally, it becomes difficult to
work these by hand.
We were able to work those Huffman examples by hand.
We started with labeling everything on the boundary and
worked our way in.
There's no particular method there.
It was just easy to work out the puzzle.
But poor Waltz, he didn't have that luxury.
So he might have, in a typical scene, he might have tens or
even hundreds of junctions to label and no easy way of
dealing with it.
So naturally writes himself a depth-first search program.
So here is vertex, or rather junction number 1.
There are many choices for which label can be used on it.
And for each of those choices, whatever he's decided junction
number 2 is has its own suite of possibilities.
And so it becomes a simple depth-first
search problem, right?
So in actuality, as soon as Waltz--
he was my office mate at the time.
I can tell you this for a fact.
As soon as he wrote this program, he kept looking over
at the computer--
they were big in those days.
They all had lights.
So you looked over at the computer to see if the lights
were still blinking.
Because he'd start this depth-first search program up
and nothing would happen.
He thought the computer had crashed.
Nothing happened.
Why did nothing happen?
Because the search base is exponential and much too big
for an ordinary computer, or maybe
even an ordinary universe.
So Waltz has to do something else.
He has to come up with a new method for using all these
labels that he's--
after about a year and a half's worth of hard work,
with lots of paper on his desk in little blocks.
After year and a half of hard work getting all these
junction labels figured out, he then has to come up with a
method for figuring out how to use them.
And so we don't know whether to think his biggest
contribution was that label set or his method.
And probably both deserve about equal billing.
Oh, I don't know how to explain what Waltz did.
Well, one way is to do an example.
And I think I will hazard an example.
Let's see.
Let me find some space.
I think I'm reduced to going over here.
But that will be convenient, since the
line labels are here.
Here's my example.
And you say, how can I give you just part of a picture?
Well, you can assume I'm looking at
this through a window.
So the edge of the window form boundary lines, and they exert
no constraint whatsoever on what's behind them.
So this is a legitimate drawing to
have to think about.
By the way, is this ambiguous?
Or do you get a firm sense that there's a unique
interpretation of all those lines?
I think there's a unique interpretation
of all those lines.
What I'm going to do is I'm actually going to solve this
problem using Huffman's labels but Waltz's method.
Because I can't simulate on the blackboard something with
50 line types and thousands of line junctions.
So I'm going to use Huffman's set to
demonstrate Waltz's algorithm.
So Waltz's algorithm involves starting out by plopping on
some junction all of the possible labels that the
answer has to be drawn from.
So let me number these in the order that we're going to
visit them.
Like so.
And so far, I've just put down the three fork options that
are resident on that first junction.
And I have to take note of exactly what they do with the
lines that come out of the junction.
So let's see.
I'll just copy them down.
One possibility is this one.
Another possibility is this one.
And another possibility is plus, plus, minus.
Oops, I've got plus, plus.
No, that's right.
So that right so far?
All I've done is copy the junction
labelings from my library.
And at this point, Waltz's algorithm says there's nothing
else to do but go on to junction number two.
And unfortunately, sadly, there are lots of labelings
that have to be considered on junction number 2.
Six of them.
1, 2, 3, 4, 5, 6.
So one of them looks like that.
Another one looks like that.
One of them is plus here, arrow in.
Another one is plus here, arrow out.
Another one is minus here, arrow down.
And minus here, arrow up.
I think I've copied those all right.
But now, having copied those down, Waltz's algorithm looks
around at the neighboring junctions and says, are any of
the things that I just placed on junction two disallowed by
what I've already placed on a neighboring junction?
So it looks over here in step number two.
And it sees that these three arrows require the line that
joins junctions 1 and 2 to be either minus or plus.
So of the six possibilities, I can only keep the ones that
are likewise content to put a plus on that line
that joins the two.
So that means that the influence flowing from
junction 1 eliminates that one, eliminates that one,
eliminates that one, and eliminates that one.
So half of them are gone.
All the ones that try to put a boundary line on that line
between 1 and 2 are disallowed.
All right?
Now likewise, we could say, well, of the remaining ones,
do they restrict what I can do at junction 1?
So let's see.
Here's a minus.
And here's a plus.
So all these possibilities over here are still alive.
So now, continuing on, we have to see what we can do at
junction 3.
These are arrow labels again.
So we have to copy exactly the same labels
set as we had before.
And now we look down at junction 2 and say, well, what
does that tell me about the three that I've just placed?
If we look up from junction 2 to see what kind of
constraints it puts on here, we have this one alive and
this one alive.
I guess we've eliminated four of the six.
So we have these two alive.
And they both but boundary lines--
I think I must have had this boundary line wrong, right?
No, that's right.
Oh yes, I see.
Plus.
This one goes--
hang on a second.
You let me do something wrong.
So plus is out.
And that must be one that goes--
this minus goes up.
Oh, yes.
I'm too hasty and uncertain about what I was doing.
So let's see.
This guy has a boundary going down.
And this guy has a boundary going up.
All of the others have been eliminated.
So that means that something that tries to put a concave
line there is gone.
And something that tries to put a plus line there is gone.
So the influence flowing up in this direction in the third
step eliminates that guy and eliminates that guy, leaving
only this guy.
But now, the thing I was worried about is you have to
also at this point go down to 2 and see if there's any
further constraint on what can survive down there, based on
what has happened over here at junction 3.
Now let's see.
This one goes up, which is compatible with a survivor.
But this one goes down, which is not
compatible with a survivor.
So when I bring this down in step three, this guy is
eliminated.
So now I'm down to just one interpretation for what can be
going on at vertex number 2.
And one interpretation for vertex number 3.
Now let's see.
This can propagate.
So now that I've made a change on vertex number 2, I have to
also see if that causes a change at vertex number 1.
So it's propagating through.
And now I can see that the only possibility here is a
minus, the label that's coming down from our survivor.
So that eliminates these two.
Whew!
It's hard to do this by hand, but I've got three of the four
things labeled.
And even with just three of the four labeled, I'm down to
a single interpretation for all of the junctions and the
lines between them.
So there's one left.
We have to deal with that fork vertex.
We better deal with it, because for all we know, this
is not a legal drawing in this world.
We have five fork vertexes to place.
But you know what?
I don't have to draw much here, because I know this is
forced to be a plus now.
And this is forced to be a plus now.
And there's only one fork vertex with any
pluses on it at all.
So now I can come through and say, well, the only possible
survivor is this one.
These are gone.
And now I have an interpretation
for all of the junctions.
And I see that the winners are this one.
And this one.
So I've got a unique interpretation.
This line is convex.
This one is concave.
This is a boundary.
That's a boundary.
And this line is convex, and that's convex.
Now that's a lot of work.
So I better check and make sure I got it right.
You'd like to see this demonstrated to make sure I
haven't made a mistake.
I'm sure of that.
Let's see.
That it?
So each of the places where a line is obscured has four
possibilities, labeled E. The arrow junctions are labeled A.
The forks-- there are five of them-- at the fork junction 5.
So let's just step through here and see what happens.
Boom.
I've got it.
I did do it right.
So let's try some more.
What do you think will happen with this one?
Unique solution?
It stopped.
Bug in my program?
Unthinkable.
What's happened?
It is genuinely ambiguous.
It can be something hanging down from the ceiling.
Or it could be something that we can think of as a step
going up from left to right.
Let's look at something more complicated.
You think it'll work?
Not enough constraint for us to figure that one out.
It's equally ambiguous, but a little bit larger example.
What about this one?
Yeah, but the stuff is creeping up from the lower
left up to the upper right.
Yeah, bingo.
It worked.
It's unambiguous.
It's variation on the same theme we had before.
But let me, just for fun, take these two lines out.
What do you think will happen now?
Seems to be doing just fine until it hits the upper
right-hand corner and discovers
it can't label stuff.
So it propagates back down.
And what looked OK in the lower left is
no good after all.
So these results are kind of consistent with what we humans
do when we look at these kinds of things.
So it's very likely that we, in our heads, do have some
constraint propagation apparatus
that we use in vision.
But putting that aside, we can think about other kinds of
intelligence different from human, that might use this
kind of mechanism to solve problems that involve a lot of
constraint in finding a solution.
So here, we saw the constraint propagation activity at work
on line drawing analysis.
But next time, what we're going do is we're going to see
at work in map coloring.
And who cares about map coloring?
People who do scheduling, because that turns out to be
the same problem.