back to index

Richard Karp: Algorithms and Computational Complexity | Lex Fridman Podcast #111


small model | large model

link |
00:00:00.000
The following is a conversation with Richard Karp,
link |
00:00:02.900
a professor at Berkeley and one of the most important figures
link |
00:00:06.300
in the history of theoretical computer science.
link |
00:00:09.480
In 1985, he received the Turing Award
link |
00:00:12.640
for his research in the theory of algorithms,
link |
00:00:15.120
including the development of the Admirons Karp algorithm
link |
00:00:18.380
for solving the max flow problem on networks,
link |
00:00:21.780
Hopcroft Karp algorithm for finding maximum cardinality
link |
00:00:25.900
matchings in bipartite graphs,
link |
00:00:27.960
and his landmark paper in complexity theory
link |
00:00:30.960
called Reduceability Among Combinatorial Problems,
link |
00:00:35.260
in which he proved 21 problems to be NP complete.
link |
00:00:38.980
This paper was probably the most important catalyst
link |
00:00:41.840
in the explosion of interest in the study of NP completeness
link |
00:00:45.340
and the P versus NP problem in general.
link |
00:00:48.760
Quick summary of the ads.
link |
00:00:50.180
Two sponsors, 8sleep mattress and Cash App.
link |
00:00:53.540
Please consider supporting this podcast
link |
00:00:55.640
by going to 8sleep.com slash Lex
link |
00:00:58.760
and downloading Cash App and using code LexPodcast.
link |
00:01:03.000
Click the links, buy the stuff.
link |
00:01:04.560
It really is the best way to support this podcast.
link |
00:01:08.040
If you enjoy this thing, subscribe on YouTube,
link |
00:01:10.240
review it with five stars on Apple Podcast,
link |
00:01:12.440
support it on Patreon,
link |
00:01:13.800
or connect with me on Twitter at Lex Friedman.
link |
00:01:16.800
As usual, I'll do a few minutes of ads now
link |
00:01:18.800
and never any ads in the middle
link |
00:01:20.060
that can break the flow of the conversation.
link |
00:01:22.960
This show is sponsored by 8sleep and its Pod Pro mattress
link |
00:01:27.340
that you can check out at 8sleep.com slash Lex
link |
00:01:30.680
to get $200 off.
link |
00:01:32.960
It controls temperature with an app.
link |
00:01:35.880
It can cool down to as low as 55 degrees
link |
00:01:38.320
on each side of the bed separately.
link |
00:01:41.000
Research shows that temperature has a big impact
link |
00:01:43.520
on the quality of our sleep.
link |
00:01:45.000
Anecdotally, it's been a game changer for me.
link |
00:01:47.760
I love it.
link |
00:01:48.760
It's been a couple of weeks now.
link |
00:01:50.160
I've just been really enjoying it,
link |
00:01:52.480
both in the fact that I'm getting better sleep
link |
00:01:54.640
and that it's a smart mattress, essentially.
link |
00:01:58.240
I kind of imagine this being the early days
link |
00:02:00.040
of artificial intelligence being a part
link |
00:02:02.800
of every aspect of our lives.
link |
00:02:04.320
And certainly infusing AI in one of the most important
link |
00:02:07.440
aspects of life, which is sleep,
link |
00:02:09.800
I think has a lot of potential for being beneficial.
link |
00:02:13.120
The Pod Pro is packed with sensors that track heart rate,
link |
00:02:16.440
heart rate variability, and respiratory rate,
link |
00:02:19.480
showing it all in their app.
link |
00:02:21.760
The app's health metrics are amazing,
link |
00:02:24.320
but the cooling alone is honestly worth the money.
link |
00:02:27.120
I don't always sleep, but when I do,
link |
00:02:29.280
I choose the 8th Sleep Pod Pro mattress.
link |
00:02:31.960
Check it out at 8thSleep.com slash Lex to get $200 off.
link |
00:02:37.560
And remember, just visiting the site
link |
00:02:39.040
and considering the purchase helps convince the folks
link |
00:02:42.000
at 8th Sleep that this silly old podcast
link |
00:02:44.840
is worth sponsoring in the future.
link |
00:02:47.400
This show is also presented by the great
link |
00:02:50.520
and powerful Cash App,
link |
00:02:53.000
the number one finance app in the App Store.
link |
00:02:55.320
When you get it, use code LEXPODCAST.
link |
00:02:58.160
Cash App lets you send money to friends,
link |
00:03:00.120
buy Bitcoin, and invest in the stock market
link |
00:03:02.520
with as little as $1.
link |
00:03:04.640
It's one of the best designed interfaces
link |
00:03:06.720
of an app that I've ever used.
link |
00:03:08.480
To me, good design is when everything is easy and natural.
link |
00:03:12.320
Bad design is when the app gets in the way,
link |
00:03:15.080
either because it's buggy,
link |
00:03:16.560
or because it tries too hard to be helpful.
link |
00:03:19.280
I'm looking at you, Clippy, from Microsoft,
link |
00:03:21.560
even though I love you.
link |
00:03:23.160
Anyway, there's a big part of my brain and heart
link |
00:03:25.480
that loves to design things
link |
00:03:27.400
and also to appreciate great design by others.
link |
00:03:30.000
So again, if you get Cash App from the App Store
link |
00:03:32.440
or Google Play and use the code LEXPODCAST,
link |
00:03:35.600
you get $10, and Cash App will also donate $10 to FIRST,
link |
00:03:39.600
an organization that is helping to advance
link |
00:03:41.800
robotics and STEM education
link |
00:03:43.480
for young people around the world.
link |
00:03:45.720
And now, here's my conversation with Richard Karp.
link |
00:03:50.520
You wrote that at the age of 13,
link |
00:03:52.840
you were first exposed to plane geometry
link |
00:03:55.240
and was wonderstruck by the power and elegance
link |
00:03:58.280
of form of proofs.
link |
00:04:00.280
Are there problems, proofs, properties, ideas
link |
00:04:02.640
in plane geometry that from that time
link |
00:04:04.960
that you remember being mesmerized by
link |
00:04:07.880
or just enjoying to go through to prove various aspects?
link |
00:04:12.880
So Michael Rabin told me this story
link |
00:04:16.240
about an experience he had when he was a young student
link |
00:04:20.360
who was tossed out of his classroom for bad behavior
link |
00:04:25.200
and was wandering through the corridors of his school
link |
00:04:29.360
and came upon two older students
link |
00:04:32.560
who were studying the problem of finding
link |
00:04:35.840
the shortest distance between two nonoverlapping circles.
link |
00:04:42.920
And Michael thought about it and said,
link |
00:04:49.120
you take the straight line between the two centers
link |
00:04:52.360
and the segment between the two circles is the shortest
link |
00:04:56.080
because a straight line is the shortest distance
link |
00:04:58.600
between the two centers.
link |
00:05:00.600
And any other line connecting the circles
link |
00:05:03.640
would be on a longer line.
link |
00:05:07.640
And I thought, and he thought, and I agreed
link |
00:05:10.360
that this was just elegance, the pure reasoning
link |
00:05:14.600
could come up with such a result.
link |
00:05:17.600
Certainly the shortest distance
link |
00:05:21.000
from the two centers of the circles is a straight line.
link |
00:05:25.680
Could you once again say what's the next step in that proof?
link |
00:05:29.680
Well, any segment joining the two circles,
link |
00:05:36.680
if you extend it by taking the radius on each side,
link |
00:05:41.440
you get a path with three edges
link |
00:05:46.560
which connects the two centers.
link |
00:05:49.240
And this has to be at least as long as the shortest path,
link |
00:05:52.560
which is the straight line.
link |
00:05:53.760
The straight line, yeah.
link |
00:05:54.800
Wow, yeah, that's quite simple.
link |
00:05:58.480
So what is it about that elegance
link |
00:06:00.800
that you just find compelling?
link |
00:06:04.640
Well, just that you could establish a fact
link |
00:06:09.960
about geometry beyond dispute by pure reasoning.
link |
00:06:18.960
I also enjoy the challenge of solving puzzles
link |
00:06:22.440
in plain geometry.
link |
00:06:23.400
It was much more fun than the earlier mathematics courses
link |
00:06:27.480
which were mostly about arithmetic operations
link |
00:06:31.000
and manipulating them.
link |
00:06:32.840
Was there something about geometry itself,
link |
00:06:35.840
the slightly visual component of it?
link |
00:06:38.160
Oh, yes, absolutely,
link |
00:06:40.200
although I lacked three dimensional vision.
link |
00:06:44.120
I wasn't very good at three dimensional vision.
link |
00:06:47.280
You mean being able to visualize three dimensional objects?
link |
00:06:49.680
Three dimensional objects or surfaces,
link |
00:06:54.280
hyperplanes and so on.
link |
00:06:57.680
So there I didn't have an intuition.
link |
00:07:01.680
But for example, the fact that the sum of the angles
link |
00:07:06.960
of a triangle is 180 degrees is proved convincingly.
link |
00:07:16.200
And it comes as a surprise that that can be done.
link |
00:07:21.320
Why is that surprising?
link |
00:07:23.480
Well, it is a surprising idea, I suppose.
link |
00:07:30.600
Why is that proved difficult?
link |
00:07:32.400
It's not, that's the point.
link |
00:07:34.200
It's so easy and yet it's so convincing.
link |
00:07:37.760
Do you remember what is the proof that it adds up to 180?
link |
00:07:42.840
You start at a corner and draw a line
link |
00:07:47.840
parallel to the opposite side.
link |
00:07:56.160
And that line sort of trisects the angle
link |
00:08:02.000
between the other two sides.
link |
00:08:05.400
And you get a half plane which has to add up to 180 degrees.
link |
00:08:10.400
It has to add up to 180 degrees and it consists
link |
00:08:15.760
in the angles by the equality of alternate angles.
link |
00:08:21.680
What's it called?
link |
00:08:24.200
You get a correspondence between the angles
link |
00:08:27.200
created along the side of the triangle
link |
00:08:31.960
and the three angles of the triangle.
link |
00:08:34.680
Has geometry had an impact on when you look into the future
link |
00:08:38.960
of your work with combinatorial algorithms?
link |
00:08:41.320
Has it had some kind of impact in terms of, yeah,
link |
00:08:45.240
being able, the puzzles, the visual aspects
link |
00:08:48.680
that were first so compelling to you?
link |
00:08:51.400
Not Euclidean geometry particularly.
link |
00:08:54.480
I think I use tools like linear programming
link |
00:09:00.040
and integer programming a lot.
link |
00:09:03.000
But those require high dimensional visualization
link |
00:09:08.000
and so I tend to go by the algebraic properties.
link |
00:09:13.200
Right, you go by the linear algebra
link |
00:09:16.640
and not by the visualization.
link |
00:09:19.560
Well, the interpretation in terms of, for example,
link |
00:09:23.680
finding the highest point on a polyhedron
link |
00:09:26.360
as in linear programming is motivating.
link |
00:09:32.640
But again, I don't have the high dimensional intuition
link |
00:09:37.560
that would particularly inform me
link |
00:09:40.080
so I sort of lean on the algebra.
link |
00:09:44.760
So to linger on that point,
link |
00:09:46.080
what kind of visualization do you do
link |
00:09:50.960
when you're trying to think about,
link |
00:09:53.240
we'll get to combinatorial algorithms,
link |
00:09:55.400
but just algorithms in general.
link |
00:09:57.240
Yeah.
link |
00:09:58.080
What's inside your mind
link |
00:09:59.760
when you're thinking about designing algorithms?
link |
00:10:02.240
Or even just tackling any mathematical problem?
link |
00:10:09.440
Well, I think that usually an algorithm
link |
00:10:12.800
involves a repetition of some inner loop
link |
00:10:19.200
and so I can sort of visualize the distance
link |
00:10:24.640
from the desired solution as iteratively reducing
link |
00:10:29.640
until you finally hit the exact solution.
link |
00:10:33.360
And try to take steps that get you closer to the.
link |
00:10:35.640
Try to take steps that get closer
link |
00:10:38.160
and having the certainty of converging.
link |
00:10:41.280
So it's basically the mechanics of the algorithm
link |
00:10:46.640
is often very simple,
link |
00:10:49.320
but especially when you're trying something out
link |
00:10:52.480
on the computer.
link |
00:10:53.320
So for example, I did some work
link |
00:10:57.080
on the traveling salesman problem
link |
00:10:59.000
and I could see there was a particular function
link |
00:11:03.080
that had to be minimized
link |
00:11:04.720
and it was fascinating to see the successive approaches
link |
00:11:08.640
to the minimum, to the optimum.
link |
00:11:11.960
You mean, so first of all,
link |
00:11:13.040
traveling salesman problem is where you have to visit
link |
00:11:16.360
every city without ever, the only ones.
link |
00:11:21.320
Yeah, that's right.
link |
00:11:22.480
Find the shortest path through a set of cities.
link |
00:11:25.120
Yeah, which is sort of a canonical standard,
link |
00:11:28.560
a really nice problem that's really hard.
link |
00:11:30.480
Right, exactly, yes.
link |
00:11:32.640
So can you say again what was nice
link |
00:11:34.520
about being able to think about the objective function there
link |
00:11:38.440
and maximizing it or minimizing it?
link |
00:11:41.560
Well, just that as the algorithm proceeded,
link |
00:11:47.120
you were making progress, continual progress,
link |
00:11:49.680
and eventually getting to the optimum point.
link |
00:11:54.000
So there's two parts, maybe.
link |
00:11:57.120
Maybe you can correct me.
link |
00:11:58.400
First is like getting an intuition
link |
00:12:00.320
about what the solution would look like
link |
00:12:02.880
and or even maybe coming up with a solution
link |
00:12:05.560
and two is proving that this thing
link |
00:12:07.280
is actually going to be pretty good.
link |
00:12:10.880
What part is harder for you?
link |
00:12:13.600
Where's the magic happen?
link |
00:12:14.960
Is it in the first sets of intuitions
link |
00:12:17.760
or is it in the messy details of actually showing
link |
00:12:22.120
that it is going to get to the exact solution
link |
00:12:25.440
and it's gonna run at a certain complexity?
link |
00:12:32.360
Well, the magic is just the fact
link |
00:12:34.760
that the gap from the optimum decreases monotonically
link |
00:12:42.240
and you can see it happening
link |
00:12:44.480
and various metrics of what's going on
link |
00:12:48.720
are improving all along until finally you hit the optimum.
link |
00:12:53.680
Perhaps later we'll talk about the assignment problem
link |
00:12:56.200
and I can illustrate.
link |
00:12:58.480
It illustrates a little better.
link |
00:13:00.720
Now zooming out again, as you write,
link |
00:13:03.120
Don Knuth has called attention to a breed of people
link |
00:13:06.880
who derive great aesthetic pleasure
link |
00:13:10.520
from contemplating the structure of computational processes.
link |
00:13:13.920
So Don calls these folks geeks
link |
00:13:16.600
and you write that you remember the moment
link |
00:13:18.600
you realized you were such a person,
link |
00:13:20.680
you were shown the Hungarian algorithm
link |
00:13:23.120
to solve the assignment problem.
link |
00:13:25.720
So perhaps you can explain what the assignment problem is
link |
00:13:29.120
and what the Hungarian algorithm is.
link |
00:13:33.160
So in the assignment problem,
link |
00:13:35.440
you have n boys and n girls
link |
00:13:40.280
and you are given the desirability of,
link |
00:13:45.280
or the cost of matching the ith boy
link |
00:13:50.200
with the jth girl for all i and j.
link |
00:13:52.640
You're given a matrix of numbers
link |
00:13:55.600
and you want to find the one to one matching
link |
00:14:02.040
of the boys with the girls
link |
00:14:04.280
such that the sum of the associated costs will be minimized.
link |
00:14:08.720
So the best way to match the boys with the girls
link |
00:14:13.240
or men with jobs or any two sets.
link |
00:14:16.440
Any possible matching is possible or?
link |
00:14:21.120
Yeah, all one to one correspondences are permissible.
link |
00:14:26.800
If there is a connection that is not allowed,
link |
00:14:29.440
then you can think of it as having an infinite cost.
link |
00:14:32.120
I see, yeah.
link |
00:14:34.320
So what you do is to depend on the observation
link |
00:14:39.320
that the identity of the optimal assignment
link |
00:14:46.360
or as we call it, the optimal permutation
link |
00:14:50.760
is not changed if you subtract a constant
link |
00:14:57.640
from any row or column of the matrix.
link |
00:15:01.640
You can see that the comparison
link |
00:15:03.360
between the different assignments is not changed by that.
link |
00:15:06.480
Because if you decrease a particular row,
link |
00:15:11.480
all the elements of a row by some constant,
link |
00:15:14.720
all solutions decrease by an amount equal to that constant.
link |
00:15:21.120
So the idea of the algorithm is to start with a matrix
link |
00:15:24.400
of non negative numbers and keep subtracting
link |
00:15:31.240
from rows or from columns.
link |
00:15:34.240
Subtracting from rows or entire columns
link |
00:15:41.800
in such a way that you subtract the same constant
link |
00:15:44.800
from all the elements of that row or column
link |
00:15:48.440
while maintaining the property
link |
00:15:50.760
that all the elements are non negative.
link |
00:15:58.400
Simple.
link |
00:15:59.280
Yeah, and so what you have to do
link |
00:16:04.720
is find small moves which will decrease the total cost
link |
00:16:13.440
while subtracting constants from rows or columns.
link |
00:16:17.600
And there's a particular way of doing that
link |
00:16:19.480
by computing the kind of shortest path
link |
00:16:22.200
through the elements in the matrix.
link |
00:16:24.000
And you just keep going in this way
link |
00:16:28.480
until you finally get a full permutation of zeros
link |
00:16:33.240
while the matrix is non negative
link |
00:16:34.920
and then you know that that has to be the cheapest.
link |
00:16:38.520
Is that as simple as it sounds?
link |
00:16:42.560
So the shortest path of the matrix part.
link |
00:16:45.560
Yeah, the simplicity lies in how you find,
link |
00:16:48.880
I oversimplified slightly what you,
link |
00:16:53.280
you will end up subtracting a constant
link |
00:16:56.440
from some rows or columns
link |
00:16:59.120
and adding the same constant back to other rows and columns.
link |
00:17:04.200
So as not to reduce any of the zero elements,
link |
00:17:09.160
you leave them unchanged.
link |
00:17:11.080
But each individual step modifies several rows and columns
link |
00:17:22.440
by the same amount but overall decreases the cost.
link |
00:17:26.600
So there's something about that elegance
link |
00:17:29.800
that made you go aha, this is a beautiful,
link |
00:17:32.240
like it's amazing that something like this,
link |
00:17:35.680
something so simple can solve a problem like this.
link |
00:17:38.080
Yeah, it's really cool.
link |
00:17:39.760
If I had mechanical ability,
link |
00:17:42.280
I would probably like to do woodworking
link |
00:17:44.760
or other activities where you sort of shape something
link |
00:17:51.440
into something beautiful and orderly
link |
00:17:55.440
and there's something about the orderly systematic nature
link |
00:18:00.560
of that iterative algorithm that is pleasing to me.
link |
00:18:05.520
So what do you think about this idea of geeks
link |
00:18:09.000
as Don Knuth calls them?
link |
00:18:11.320
What do you think, is it something specific to a mindset
link |
00:18:16.520
that allows you to discover the elegance
link |
00:18:19.880
in computational processes or is this all of us,
link |
00:18:23.160
can all of us discover this beauty?
link |
00:18:25.280
Were you born this way?
link |
00:18:28.480
I think so.
link |
00:18:29.320
I always like to play with numbers.
link |
00:18:30.760
I used to amuse myself by multiplying
link |
00:18:35.760
by multiplying four digit decimal numbers in my head
link |
00:18:40.320
and putting myself to sleep by starting with one
link |
00:18:44.440
and doubling the number as long as I could go
link |
00:18:48.160
and testing my memory, my ability to retain the information.
link |
00:18:52.720
And I also read somewhere that you wrote
link |
00:18:55.920
that you enjoyed showing off to your friends
link |
00:18:59.880
by I believe multiplying four digit numbers.
link |
00:19:04.600
Right.
link |
00:19:05.440
Four digit numbers.
link |
00:19:07.040
Yeah, I had a summer job at a beach resort
link |
00:19:10.760
outside of Boston and the other employee,
link |
00:19:16.720
I was the barker at a skee ball game.
link |
00:19:20.160
Yeah.
link |
00:19:21.000
I used to sit at a microphone saying come one,
link |
00:19:26.240
come all, come in and play skee ball,
link |
00:19:28.200
five cents to play, a nickel to win and so on.
link |
00:19:31.040
That's what a barker, I wasn't sure if I should know
link |
00:19:33.840
but barker, that's, so you're the charming,
link |
00:19:38.240
outgoing person that's getting people to come in.
link |
00:19:41.200
Yeah, well I wasn't particularly charming
link |
00:19:43.560
but I could be very repetitious and loud.
link |
00:19:47.120
And the other employees were sort of juvenile delinquents
link |
00:19:53.640
who had no academic bent but somehow I found
link |
00:19:58.640
that I could impress them by performing
link |
00:20:03.400
this mental arithmetic.
link |
00:20:06.640
Yeah, there's something to that.
link |
00:20:10.160
Some of the most popular videos on the internet
link |
00:20:13.920
is there's a YouTube channel called Numberphile
link |
00:20:18.000
that shows off different mathematical ideas.
link |
00:20:20.440
I see.
link |
00:20:21.280
There's still something really profoundly interesting
link |
00:20:23.360
to people about math, the beauty of it.
link |
00:20:27.160
Something, even if they don't understand
link |
00:20:31.240
the basic concept even being discussed,
link |
00:20:33.640
there's something compelling to it.
link |
00:20:35.040
What do you think that is?
link |
00:20:37.160
Any lessons you drew from your early teen years
link |
00:20:40.520
when you were showing off to your friends with the numbers?
link |
00:20:45.360
Like what is it that attracts us
link |
00:20:47.640
to the beauty of mathematics do you think?
link |
00:20:51.340
The general population, not just the computer scientists
link |
00:20:54.560
and mathematicians.
link |
00:20:56.560
I think that you can do amazing things.
link |
00:20:59.600
You can test whether large numbers are prime.
link |
00:21:04.440
You can solve little puzzles
link |
00:21:09.560
about cannibals and missionaries.
link |
00:21:13.360
And that's a kind of achievement, it's puzzle solving.
link |
00:21:19.280
And at a higher level, the fact that you can do
link |
00:21:22.720
this reasoning that you can prove
link |
00:21:24.600
in an absolutely ironclad way that some of the angles
link |
00:21:28.960
of a triangle is 180 degrees.
link |
00:21:32.600
Yeah, it's a nice escape from the messiness
link |
00:21:35.300
of the real world where nothing can be proved.
link |
00:21:38.080
So, and we'll talk about it, but sometimes the ability
link |
00:21:41.320
to map the real world into such problems
link |
00:21:43.520
where you can't prove it is a powerful step.
link |
00:21:47.080
Yeah.
link |
00:21:47.900
It's amazing that we can do it.
link |
00:21:48.740
Of course, another attribute of geeks
link |
00:21:50.040
is they're not necessarily endowed
link |
00:21:53.620
with emotional intelligence, so they can live
link |
00:21:57.220
in a world of abstractions without having
link |
00:21:59.960
to master the complexities of dealing with people.
link |
00:22:06.620
So just to link on the historical note,
link |
00:22:09.440
as a PhD student in 1955, you joined the computational lab
link |
00:22:13.200
at Harvard where Howard Aiken had built the Mark I
link |
00:22:17.040
and the Mark IV computers.
link |
00:22:19.760
Just to take a step back into that history,
link |
00:22:22.000
what were those computers like?
link |
00:22:26.360
The Mark IV filled a large room,
link |
00:22:31.160
much bigger than this large office
link |
00:22:33.700
that we were talking in now.
link |
00:22:36.880
And you could walk around inside it.
link |
00:22:39.120
There were rows of relays.
link |
00:22:43.340
You could just walk around the interior
link |
00:22:45.360
and the machine would sometimes fail because of bugs,
link |
00:22:53.140
which literally meant flying creatures
link |
00:22:56.220
landing on the switches.
link |
00:22:59.820
So I never used that machine for any practical purpose.
link |
00:23:06.260
The lab eventually acquired one of the earlier
link |
00:23:12.680
commercial computers.
link |
00:23:14.600
And this was already in the 60s?
link |
00:23:16.680
No, in the mid 50s, or late 50s.
link |
00:23:19.840
There was already commercial computers in the...
link |
00:23:21.800
Yeah, we had a Univac, a Univac with 2,000 words of storage.
link |
00:23:27.280
And so you had to work hard to allocate the memory properly
link |
00:23:31.720
to also the excess time from one word to another
link |
00:23:36.120
depended on the number of the particular words.
link |
00:23:41.120
And so there was an art to sort of arranging
link |
00:23:44.880
the storage allocation to make fetching data rapid.
link |
00:23:51.240
Were you attracted to this actual physical world
link |
00:23:54.960
implementation of mathematics?
link |
00:23:58.140
So it's a mathematical machine that's actually doing
link |
00:24:01.400
the math physically?
link |
00:24:03.120
No, not at all.
link |
00:24:04.800
I think I was attracted to the underlying algorithms.
link |
00:24:09.400
But did you draw any inspiration?
link |
00:24:12.880
So could you have imagined, like what did you imagine
link |
00:24:17.240
was the future of these giant computers?
link |
00:24:20.120
Could you have imagined that 60 years later
link |
00:24:22.000
we'd have billions of these computers all over the world?
link |
00:24:25.780
I couldn't imagine that, but there was a sense
link |
00:24:30.560
in the laboratory that this was the wave of the future.
link |
00:24:36.120
In fact, my mother influenced me.
link |
00:24:38.920
She told me that data processing was gonna be really big
link |
00:24:42.320
and I should get into it.
link |
00:24:43.920
You're a smart woman.
link |
00:24:47.280
Yeah, she was a smart woman.
link |
00:24:49.080
And there was just a feeling that this was going
link |
00:24:53.080
to change the world, but I didn't think of it
link |
00:24:55.680
in terms of personal computing.
link |
00:24:57.200
I had no anticipation that we would be walking around
link |
00:25:02.920
with computers in our pockets or anything like that.
link |
00:25:06.120
Did you see computers as tools, as mathematical mechanisms
link |
00:25:12.800
to analyze sort of the theoretical computer science,
link |
00:25:16.540
or as the AI folks, which is an entire other community
link |
00:25:21.000
of dreamers, as something that could one day
link |
00:25:24.480
have human level intelligence?
link |
00:25:26.840
Well, AI wasn't very much on my radar.
link |
00:25:29.560
I did read Turing's paper about the...
link |
00:25:33.200
The Turing Test, Computing and Intelligence.
link |
00:25:38.080
Yeah, the Turing test.
link |
00:25:40.520
What'd you think about that paper?
link |
00:25:41.840
Was that just like science fiction?
link |
00:25:45.600
I thought that it wasn't a very good test
link |
00:25:48.280
because it was too subjective.
link |
00:25:50.440
So I didn't feel that the Turing test
link |
00:25:55.280
was really the right way to calibrate
link |
00:25:58.400
how intelligent an algorithm could be.
link |
00:26:01.000
But to linger on that, do you think it's,
link |
00:26:03.240
because you've come up with some incredible tests later on,
link |
00:26:07.800
tests on algorithms, right, that are like strong,
link |
00:26:12.200
reliable, robust across a bunch of different classes
link |
00:26:15.320
of algorithms, but returning to this emotional mess
link |
00:26:20.020
that is intelligence, do you think it's possible
link |
00:26:22.840
to come up with a test that's as ironclad
link |
00:26:26.420
as some of the computational complexity work?
link |
00:26:31.320
Well, I think the greater question
link |
00:26:32.800
is whether it's possible to achieve human level intelligence.
link |
00:26:38.720
Right, so first of all, let me, at the philosophical level,
link |
00:26:42.080
do you think it's possible to create algorithms
link |
00:26:46.320
that reason and would seem to us
link |
00:26:51.320
to have the same kind of intelligence as human beings?
link |
00:26:54.080
It's an open question.
link |
00:26:58.160
It seems to me that most of the achievements
link |
00:27:04.080
have operate within a very limited set of ground rules
link |
00:27:11.840
and for a very limited, precise task,
link |
00:27:15.400
which is a quite different situation
link |
00:27:17.600
from the processes that go on in the minds of humans,
link |
00:27:22.340
which where they have to sort of function
link |
00:27:25.040
in changing environments, they have emotions,
link |
00:27:30.120
they have physical attributes for exploring
link |
00:27:37.920
their environment, they have intuition,
link |
00:27:41.400
they have desires, emotions, and I don't see anything
link |
00:27:46.400
in the current achievements of what's called AI
link |
00:27:54.440
that come close to that capability.
link |
00:27:56.940
I don't think there's any computer program
link |
00:28:02.160
which surpasses a six month old child
link |
00:28:05.720
in terms of comprehension of the world.
link |
00:28:10.680
Do you think this complexity of human intelligence,
link |
00:28:15.560
all the cognitive abilities we have,
link |
00:28:17.080
all the emotion, do you think that could be reduced one day
link |
00:28:21.380
or just fundamentally can it be reduced
link |
00:28:23.960
to a set of algorithms or an algorithm?
link |
00:28:27.260
So can a Turing machine achieve human level intelligence?
link |
00:28:33.180
I am doubtful about that.
link |
00:28:35.940
I guess the argument in favor of it
link |
00:28:38.640
is that the human brain seems to achieve what we call
link |
00:28:47.240
intelligence cognitive abilities of different kinds.
link |
00:28:51.820
And if you buy the premise that the human brain
link |
00:28:54.300
is just an enormous interconnected set of switches,
link |
00:28:58.600
so to speak, then in principle, you should be able
link |
00:29:03.120
to diagnose what that interconnection structure is like,
link |
00:29:07.420
characterize the individual switches,
link |
00:29:09.400
and build a simulation outside.
link |
00:29:14.100
But while that may be true in principle,
link |
00:29:17.640
that cannot be the way we're eventually
link |
00:29:19.900
gonna tackle this problem.
link |
00:29:25.960
That does not seem like a feasible way to go about it.
link |
00:29:29.360
So there is, however, an existence proof that
link |
00:29:32.480
if you believe that the brain is just a network of neurons
link |
00:29:42.440
operating by rules, I guess you could say
link |
00:29:45.240
that that's an existence proof of the capabilities
link |
00:29:50.160
of a mechanism, but it would be almost impossible
link |
00:29:55.100
to acquire the information unless we got enough insight
link |
00:30:00.100
into the operation of the brain.
link |
00:30:02.780
But there's so much mystery there.
link |
00:30:04.300
Do you think, what do you make of consciousness,
link |
00:30:06.700
for example, as an example of something
link |
00:30:11.020
we completely have no clue about?
link |
00:30:13.180
The fact that we have this subjective experience.
link |
00:30:15.940
Is it possible that this network of,
link |
00:30:19.780
this circuit of switches is able to create
link |
00:30:22.900
something like consciousness?
link |
00:30:24.940
To know its own identity.
link |
00:30:26.820
Yeah, to know the algorithm, to know itself.
link |
00:30:30.260
To know itself.
link |
00:30:32.100
I think if you try to define that rigorously,
link |
00:30:35.340
you'd have a lot of trouble.
link |
00:30:36.660
Yeah, that seems to be.
link |
00:30:39.380
So I know that there are many who believe
link |
00:30:47.040
that general intelligence can be achieved,
link |
00:30:52.620
and there are even some who feel certain
link |
00:30:55.780
that the singularity will come
link |
00:30:59.180
and we will be surpassed by the machines
link |
00:31:01.740
which will then learn more and more about themselves
link |
00:31:04.380
and reduce humans to an inferior breed.
link |
00:31:08.640
I am doubtful that this will ever be achieved.
link |
00:31:12.700
Just for the fun of it, could you linger on why,
link |
00:31:17.020
what's your intuition, why you're doubtful?
link |
00:31:19.100
So there are quite a few people that are extremely worried
link |
00:31:23.060
about this existential threat of artificial intelligence,
link |
00:31:26.380
of us being left behind
link |
00:31:29.220
by this super intelligent new species.
link |
00:31:32.340
What's your intuition why that's not quite likely?
link |
00:31:37.860
Just because none of the achievements in speech
link |
00:31:43.480
or robotics or natural language processing
link |
00:31:48.580
or creation of flexible computer assistants
link |
00:31:52.660
or any of that comes anywhere near close
link |
00:31:56.460
to that level of cognition.
link |
00:32:00.300
What do you think about ideas of sort of,
link |
00:32:02.260
if we look at Moore's Law and exponential improvement
link |
00:32:06.140
to allow us, that would surprise us?
link |
00:32:09.300
Sort of our intuition fall apart
link |
00:32:11.540
with exponential improvement because, I mean,
link |
00:32:14.660
we're not able to kind of,
link |
00:32:16.060
we kind of think in linear improvement.
link |
00:32:18.260
We're not able to imagine a world
link |
00:32:20.220
that goes from the Mark I computer to an iPhone X.
link |
00:32:26.180
Yeah.
link |
00:32:27.540
So do you think we could be really surprised
link |
00:32:31.260
by the exponential growth?
link |
00:32:33.420
Or on the flip side, is it possible
link |
00:32:37.540
that also intelligence is actually way, way, way, way harder,
link |
00:32:42.220
even with exponential improvement to be able to crack?
link |
00:32:47.100
I don't think any constant factor improvement
link |
00:32:50.300
could change things.
link |
00:32:53.980
I mean, given our current comprehension
link |
00:32:58.100
of what cognition requires,
link |
00:33:04.940
it seems to me that multiplying the speed of the switches
link |
00:33:08.760
by a factor of a thousand or a million
link |
00:33:13.580
will not be useful until we really understand
link |
00:33:16.600
the organizational principle behind the network of switches.
link |
00:33:23.140
Well, let's jump into the network of switches
link |
00:33:25.420
and talk about combinatorial algorithms if we could.
link |
00:33:29.860
Let's step back with the very basics.
link |
00:33:31.700
What are combinatorial algorithms?
link |
00:33:33.700
And what are some major examples
link |
00:33:35.080
of problems they aim to solve?
link |
00:33:38.140
A combinatorial algorithm is one which deals
link |
00:33:43.140
with a system of discrete objects
link |
00:33:48.340
that can occupy various states
link |
00:33:52.300
or take on various values from a discrete set of values
link |
00:33:59.700
and need to be arranged or selected
link |
00:34:06.620
in such a way as to achieve some,
link |
00:34:10.520
to minimize some cost function.
link |
00:34:13.100
Or to prove the existence
link |
00:34:16.220
of some combinatorial configuration.
link |
00:34:19.980
So an example would be coloring the vertices of a graph.
link |
00:34:25.020
What's a graph?
link |
00:34:27.280
Let's step back.
link |
00:34:28.120
So it's fun to ask one of the greatest
link |
00:34:34.780
computer scientists of all time
link |
00:34:36.180
the most basic questions in the beginning of most books.
link |
00:34:39.260
But for people who might not know,
link |
00:34:41.420
but in general how you think about it, what is a graph?
link |
00:34:44.480
A graph, that's simple.
link |
00:34:47.260
It's a set of points, certain pairs of which
link |
00:34:51.220
are joined by lines called edges.
link |
00:34:55.060
And they sort of represent the,
link |
00:34:58.740
in different applications represent the interconnections
link |
00:35:02.340
between discrete objects.
link |
00:35:05.900
So they could be the interactions,
link |
00:35:07.740
interconnections between switches in a digital circuit
link |
00:35:12.500
or interconnections indicating the communication patterns
link |
00:35:16.380
of a human community.
link |
00:35:19.300
And they could be directed or undirected
link |
00:35:21.420
and then as you've mentioned before, might have costs.
link |
00:35:25.540
Right, they can be directed or undirected.
link |
00:35:27.700
They can be, you can think of them as,
link |
00:35:30.660
if you think, if a graph were representing
link |
00:35:34.260
a communication network, then the edge could be undirected
link |
00:35:38.700
meaning that information could flow along it
link |
00:35:41.780
in both directions or it could be directed
link |
00:35:44.540
with only one way communication.
link |
00:35:46.980
A road system is another example of a graph
link |
00:35:49.740
with weights on the edges.
link |
00:35:52.220
And then a lot of problems of optimizing the efficiency
link |
00:35:57.220
of such networks or learning about the performance
link |
00:36:04.660
of such networks are the object of combinatorial algorithms.
link |
00:36:11.340
So it could be scheduling classes at a school
link |
00:36:15.620
where the vertices, the nodes of the network
link |
00:36:20.620
are the individual classes and the edges indicate
link |
00:36:25.620
the constraints which say that certain classes
link |
00:36:28.580
cannot take place at the same time
link |
00:36:30.860
or certain teachers are available only for certain classes,
link |
00:36:34.980
et cetera.
link |
00:36:36.300
Or I talked earlier about the assignment problem
link |
00:36:41.300
of matching the boys with the girls
link |
00:36:43.060
where you have there a graph with an edge
link |
00:36:48.060
from each boy to each girl with a weight
link |
00:36:51.300
indicating the cost.
link |
00:36:53.460
Or in logical design of computers,
link |
00:36:58.460
you might want to find a set of so called gates,
link |
00:37:04.300
switches that perform logical functions
link |
00:37:07.500
which can be interconnected to each other
link |
00:37:10.060
and perform logical functions which can be interconnected
link |
00:37:13.740
to realize some function.
link |
00:37:15.580
So you might ask how many gates do you need
link |
00:37:22.460
in order for a circuit to give a yes output
link |
00:37:33.220
if at least a given number of its inputs are ones
link |
00:37:38.220
and no if fewer are present.
link |
00:37:42.980
My favorite's probably all the work with network flow.
link |
00:37:46.580
So anytime you have, I don't know why it's so compelling
link |
00:37:50.780
but there's something just beautiful about it.
link |
00:37:52.420
It seems like there's so many applications
link |
00:37:54.340
and communication networks and traffic flow
link |
00:38:00.700
that you can map into these and then you could think
link |
00:38:03.340
of pipes and water going through pipes
link |
00:38:05.580
and you could optimize it in different ways.
link |
00:38:07.260
There's something always visually and intellectually
link |
00:38:11.140
compelling to me about it.
link |
00:38:12.340
And of course you've done work there.
link |
00:38:15.940
Yeah, so there the edges represent channels
link |
00:38:21.540
along which some commodity can flow.
link |
00:38:24.540
It might be gas, it might be water, it might be information.
link |
00:38:29.900
Maybe supply chain as well like products being.
link |
00:38:33.900
Products flowing from one operation to another.
link |
00:38:37.740
And the edges have a capacity which is the rate
link |
00:38:41.140
at which the commodity can flow.
link |
00:38:43.740
And a central problem is to determine
link |
00:38:49.220
given a network of these channels.
link |
00:38:51.700
In this case the edges are communication channels.
link |
00:38:56.380
The challenge is to find the maximum rate
link |
00:39:01.380
at which the information can flow along these channels
link |
00:39:05.460
to get from a source to a destination.
link |
00:39:09.060
And that's a fundamental combinatorial problem
link |
00:39:12.620
that I've worked on jointly with the scientist Jack Edmonds.
link |
00:39:19.780
I think we're the first to give a formal proof
link |
00:39:22.380
that this maximum flow problem through a network
link |
00:39:27.460
can be solved in polynomial time.
link |
00:39:30.660
Which I remember the first time I learned that.
link |
00:39:33.900
Just learning that in maybe even grad school.
link |
00:39:39.740
I don't think it was even undergrad.
link |
00:39:41.100
No, algorithm, yeah.
link |
00:39:43.380
Do network flows get taught in basic algorithms courses?
link |
00:39:50.100
Yes, probably.
link |
00:39:51.100
Okay, so yeah, I remember being very surprised
link |
00:39:53.740
that max flow is a polynomial time algorithm.
link |
00:39:56.780
That there's a nice fast algorithm that solves max flow.
link |
00:39:59.900
So there is an algorithm named after you in Edmonds.
link |
00:40:06.540
The Edmond Carp algorithm for max flow.
link |
00:40:08.380
So what was it like tackling that problem
link |
00:40:12.580
and trying to arrive at a polynomial time solution?
link |
00:40:15.660
And maybe you can describe the algorithm.
link |
00:40:17.180
Maybe you can describe what's the running time complexity
link |
00:40:19.900
that you showed.
link |
00:40:20.740
Yeah, well, first of all,
link |
00:40:23.340
what is a polynomial time algorithm?
link |
00:40:25.620
Perhaps we could discuss that.
link |
00:40:28.580
So yeah, let's actually just even, yeah.
link |
00:40:31.580
What is algorithmic complexity?
link |
00:40:34.140
What are the major classes of algorithm complexity?
link |
00:40:38.220
So in a problem like the assignment problem
link |
00:40:41.860
or scheduling schools or any of these applications,
link |
00:40:48.820
you have a set of input data which might, for example,
link |
00:40:53.820
be a set of vertices connected by edges
link |
00:41:01.460
with you're given for each edge the capacity of the edge.
link |
00:41:07.340
And you have algorithms which are,
link |
00:41:12.220
think of them as computer programs with operations
link |
00:41:16.700
such as addition, subtraction, multiplication, division,
link |
00:41:19.940
comparison of numbers, and so on.
link |
00:41:22.020
And you're trying to construct an algorithm
link |
00:41:29.540
based on those operations, which will determine
link |
00:41:33.860
in a minimum number of computational steps
link |
00:41:37.260
the answer to the problem.
link |
00:41:38.460
In this case, the computational step
link |
00:41:41.100
is one of those operations.
link |
00:41:43.380
And the answer to the problem is let's say
link |
00:41:46.060
the configuration of the network
link |
00:41:50.420
that carries the maximum amount of flow.
link |
00:41:54.860
And an algorithm is said to run in polynomial time
link |
00:41:59.940
if as a function of the size of the input,
link |
00:42:04.980
the number of vertices, the number of edges, and so on,
link |
00:42:09.180
the number of basic computational steps grows
link |
00:42:12.460
only as some fixed power of that size.
link |
00:42:15.220
A linear algorithm would execute a number of steps
link |
00:42:21.940
linearly proportional to the size.
link |
00:42:24.660
Quadratic algorithm would be steps proportional
link |
00:42:27.700
to the square of the size, and so on.
link |
00:42:30.660
And algorithms whose running time is bounded
link |
00:42:34.660
by some fixed power of the size
link |
00:42:37.260
are called polynomial algorithms.
link |
00:42:39.900
Yeah.
link |
00:42:40.740
And that's supposed to be relatively fast class
link |
00:42:44.060
of algorithms.
link |
00:42:44.900
That's right.
link |
00:42:45.740
Theoreticians take that to be the definition
link |
00:42:49.500
of an algorithm being efficient.
link |
00:42:54.460
And we're interested in which problems can be solved
link |
00:42:57.940
by such efficient algorithms.
link |
00:43:02.300
One can argue whether that's the right definition
link |
00:43:04.940
of efficient because you could have an algorithm
link |
00:43:08.100
whose running time is the 10,000th power
link |
00:43:11.420
of the size of the input,
link |
00:43:12.540
and that wouldn't be really efficient.
link |
00:43:15.860
And in practice, it's oftentimes reducing
link |
00:43:19.220
from an N squared algorithm to an N log N
link |
00:43:22.620
or a linear time is practically the jump
link |
00:43:26.940
that you wanna make to allow a real world system
link |
00:43:30.260
to solve a problem.
link |
00:43:31.220
Yeah, that's also true because especially
link |
00:43:33.260
as we get very large networks,
link |
00:43:35.860
the size can be in the millions,
link |
00:43:38.060
and then anything above N log N
link |
00:43:43.700
where N is the size would be too much
link |
00:43:46.940
for a practical solution.
link |
00:43:49.940
Okay, so that's polynomial time algorithms.
link |
00:43:52.500
What other classes of algorithms are there?
link |
00:43:56.140
What's, so that usually they designate polynomials
link |
00:44:01.100
of the letter P.
link |
00:44:02.380
Yeah.
link |
00:44:03.220
There's also NP, NP complete and NP hard.
link |
00:44:06.180
Yeah.
link |
00:44:07.140
So can you try to disentangle those
link |
00:44:10.900
by trying to define them simply?
link |
00:44:14.260
Right, so a polynomial time algorithm
link |
00:44:16.940
is one whose running time is bounded
link |
00:44:20.460
by a polynomial in the size of the input.
link |
00:44:24.540
Then the class of such algorithms is called P.
link |
00:44:29.380
In the worst case, by the way, we should say, right?
link |
00:44:31.420
Yeah.
link |
00:44:32.260
So for every case of the problem.
link |
00:44:33.100
Yes, that's right, and that's very important
link |
00:44:34.300
that in this theory, when we measure the complexity
link |
00:44:39.500
of an algorithm, we really measure the number of steps,
link |
00:44:45.020
the growth of the number of steps in the worst case.
link |
00:44:48.900
So you may have an algorithm that runs very rapidly
link |
00:44:53.460
in most cases, but if there's any case
link |
00:44:56.820
where it gets into a very long computation,
link |
00:45:00.100
that would increase the computational complexity
link |
00:45:03.420
by this measure.
link |
00:45:05.300
And that's a very important issue
link |
00:45:07.340
because there are, as we may discuss later,
link |
00:45:10.540
there are some very important algorithms
link |
00:45:13.220
which don't have a good standing
link |
00:45:15.500
from the point of view of their worst case performance
link |
00:45:18.100
and yet are very effective.
link |
00:45:20.620
So theoreticians are interested in P,
link |
00:45:24.300
the class of problem solvable in polynomial time.
link |
00:45:27.500
Then there's NP, which is the class of problems
link |
00:45:34.500
which may be hard to solve, but when confronted
link |
00:45:42.700
with a solution, you can check it in polynomial time.
link |
00:45:46.620
Let me give you an example there.
link |
00:45:49.180
So if we look at the assignment problem,
link |
00:45:52.420
so you have N boys, you have N girls,
link |
00:45:55.940
the number of numbers that you need to write down
link |
00:45:58.740
to specify the problem instance is N squared.
link |
00:46:03.740
And the question is how many steps are needed to solve it?
link |
00:46:11.540
And Jack Edmonds and I were the first to show
link |
00:46:15.660
that it could be done in time and cubed.
link |
00:46:20.260
Earlier algorithms required N to the fourth.
link |
00:46:23.900
So as a polynomial function of the size of the input,
link |
00:46:27.340
this is a fast algorithm.
link |
00:46:30.180
Now to illustrate the class NP, the question is
link |
00:46:34.100
how long would it take to verify
link |
00:46:38.940
that a solution is optimal?
link |
00:46:42.700
So for example, if the input was a graph,
link |
00:46:48.140
we might want to find the largest clique in the graph
link |
00:46:53.140
or a clique is a set of vertices such that any vertex,
link |
00:46:58.860
each vertex in the set is adjacent to each of the others.
link |
00:47:03.980
So the clique is a complete subgraph.
link |
00:47:08.940
Yeah, so if it's a Facebook social network,
link |
00:47:11.900
everybody's friends with everybody else, close clique.
link |
00:47:15.300
No, that would be what's called a complete graph.
link |
00:47:17.300
It would be.
link |
00:47:18.220
No, I mean within that clique.
link |
00:47:20.660
Within that clique, yeah.
link |
00:47:21.900
Yeah, they're all friends.
link |
00:47:25.580
So a complete graph is when?
link |
00:47:27.820
Everybody is friendly.
link |
00:47:28.820
As everybody is friends with everybody, yeah.
link |
00:47:31.340
So the problem might be to determine whether
link |
00:47:36.340
in a given graph there exists a clique of a certain size.
link |
00:47:43.020
Now that turns out to be a very hard problem,
link |
00:47:45.740
but if somebody hands you a clique and asks you to check
link |
00:47:50.740
whether it is, hands you a set of vertices
link |
00:47:55.180
and asks you to check whether it's a clique,
link |
00:47:58.900
you could do that simply by exhaustively looking
link |
00:48:01.900
at all of the edges between the vertices and the clique
link |
00:48:05.220
and verifying that they're all there.
link |
00:48:08.020
And that's a polynomial time algorithm.
link |
00:48:10.540
That's a polynomial.
link |
00:48:11.540
So the problem of finding the clique
link |
00:48:17.620
appears to be extremely hard,
link |
00:48:19.300
but the problem of verifying a clique
link |
00:48:22.980
to see if it reaches a target number of vertices
link |
00:48:28.260
is easy to verify.
link |
00:48:31.700
So finding the clique is hard, checking it is easy.
link |
00:48:35.740
Problems of that nature are called
link |
00:48:39.020
nondeterministic polynomial time algorithms,
link |
00:48:42.460
and that's the class NP.
link |
00:48:45.700
And what about NP complete and NP hard?
link |
00:48:48.360
Okay, let's talk about problems
link |
00:48:50.900
where you're getting a yes or no answer
link |
00:48:53.800
rather than a numerical value.
link |
00:48:55.460
So either there is a perfect matching
link |
00:48:58.780
of the boys with the girls or there isn't.
link |
00:49:04.180
It's clear that every problem in P is also in NP.
link |
00:49:10.580
If you can solve the problem exactly,
link |
00:49:12.580
then you can certainly verify the solution.
link |
00:49:17.540
On the other hand, there are problems in the class NP.
link |
00:49:23.820
This is the class of problems that are easy to check,
link |
00:49:27.140
although they may be hard to solve.
link |
00:49:29.700
It's not at all clear that problems in NP lie in P.
link |
00:49:33.780
So for example, if we're looking
link |
00:49:36.220
at scheduling classes at a school,
link |
00:49:39.300
the fact that you can verify when handed a schedule
link |
00:49:44.300
for the school, whether it meets all the requirements,
link |
00:49:47.980
that doesn't mean that you can find the schedule rapidly.
link |
00:49:51.380
So intuitively, NP, nondeterministic polynomial checking
link |
00:49:55.780
rather than finding, is going to be harder than,
link |
00:50:03.180
is going to include, is easier.
link |
00:50:06.140
Checking is easier, and therefore the class of problems
link |
00:50:08.820
that can be checked appears to be much larger
link |
00:50:11.940
than the class of problems that can be solved.
link |
00:50:14.620
And then you keep adding appears to,
link |
00:50:17.380
and sort of these additional words that designate
link |
00:50:22.220
that we don't know for sure yet.
link |
00:50:24.060
We don't know for sure.
link |
00:50:25.180
So the theoretical question, which is considered
link |
00:50:28.140
to be the most central problem
link |
00:50:30.420
in theoretical computer science,
link |
00:50:32.640
or at least computational complexity theory,
link |
00:50:36.380
combinatorial algorithm theory,
link |
00:50:38.560
the question is whether P is equal to NP.
link |
00:50:43.600
If P were equal to NP, it would be amazing.
link |
00:50:46.300
It would mean that every problem
link |
00:50:54.240
where a solution can be rapidly checked
link |
00:50:58.080
can actually be solved in polynomial time.
link |
00:51:00.900
We don't really believe that's true.
link |
00:51:03.420
If you're scheduling classes at a school,
link |
00:51:05.780
we expect that if somebody hands you a satisfying schedule,
link |
00:51:13.020
you can verify that it works.
link |
00:51:15.620
That doesn't mean that you should be able
link |
00:51:17.140
to find such a schedule.
link |
00:51:18.940
So intuitively, NP encompasses a lot more problems than P.
link |
00:51:24.140
So can we take a small tangent
link |
00:51:28.020
and break apart that intuition?
link |
00:51:30.460
So do you, first of all, think that the biggest
link |
00:51:34.540
sort of open problem in computer science,
link |
00:51:36.200
maybe mathematics, is whether P equals NP?
link |
00:51:40.000
Do you think P equals NP,
link |
00:51:43.220
or do you think P is not equal to NP?
link |
00:51:46.300
If you had to bet all your money on it.
link |
00:51:48.820
I would bet that P is unequal to NP,
link |
00:51:52.020
simply because there are problems
link |
00:51:54.280
that have been around for centuries
link |
00:51:55.940
and have been studied intensively in mathematics,
link |
00:51:58.980
and even more so in the last 50 years
link |
00:52:02.060
since the P versus NP was stated.
link |
00:52:05.600
And no polynomial time algorithms have been found
link |
00:52:10.180
for these easy to check problems.
link |
00:52:13.700
So one example is a problem that goes back
link |
00:52:17.620
to the mathematician Gauss,
link |
00:52:19.860
who was interested in factoring large numbers.
link |
00:52:24.480
So we know what a number is prime
link |
00:52:27.960
if it cannot be written as the product
link |
00:52:31.500
of two or more numbers unequal to one.
link |
00:52:36.340
So if we can factor a number like 91, it's seven times 13.
link |
00:52:43.820
But if I give you 20 digit or 30 digit numbers,
link |
00:52:50.860
you're probably gonna be at a loss
link |
00:52:52.540
to have any idea whether they can be factored.
link |
00:52:56.840
So the problem of factoring very large numbers
link |
00:53:00.020
does not appear to have an efficient solution.
link |
00:53:06.960
But once you have found the factors,
link |
00:53:11.680
expressed the number as a product of two smaller numbers,
link |
00:53:16.600
you can quickly verify that they are factors of the number.
link |
00:53:19.960
And your intuition is a lot of people finding,
link |
00:53:23.540
a lot of brilliant people have tried to find algorithms
link |
00:53:25.720
for this one particular problem.
link |
00:53:26.960
There's many others like it that are really well studied
link |
00:53:30.520
and it would be great to find an efficient algorithm for.
link |
00:53:33.960
Right, and in fact, we have some results
link |
00:53:40.320
that I was instrumental in obtaining following up on work
link |
00:53:44.680
by the mathematician Stephen Cook
link |
00:53:48.720
to show that within the class NP of easy to check problems,
link |
00:53:53.720
easy to check problems, there's a huge number
link |
00:53:57.080
that are equivalent in the sense that either all of them
link |
00:54:00.640
or none of them lie in P.
link |
00:54:03.200
And this happens only if P is equal to NP.
link |
00:54:06.400
So if P is unequal to NP, we would also know
link |
00:54:11.240
that virtually all the standard combinatorial problems,
link |
00:54:16.240
virtually all the standard combinatorial problems,
link |
00:54:20.280
if P is unequal to NP, none of them can be solved
link |
00:54:23.860
in polynomial time.
link |
00:54:25.920
Can you explain how that's possible
link |
00:54:28.560
to tie together so many problems in a nice bunch
link |
00:54:32.280
that if one is proven to be efficient, then all are?
link |
00:54:36.560
The first and most important stage of progress
link |
00:54:40.600
was a result by Stephen Cook who showed that a certain problem
link |
00:54:49.680
called the satisfiability problem of propositional logic
link |
00:54:55.880
is as hard as any problem in the class P.
link |
00:55:00.200
So the propositional logic problem is expressed
link |
00:55:05.200
in terms of expressions involving the logical operations
link |
00:55:11.040
and, or, and not operating on variables
link |
00:55:16.860
that can be either true or false.
link |
00:55:19.240
So an instance of the problem would be some formula
link |
00:55:24.560
involving and, or, and not.
link |
00:55:28.240
And the question would be whether there is an assignment
link |
00:55:31.180
of truth values to the variables in the problem
link |
00:55:34.900
that would make the formula true.
link |
00:55:37.400
So for example, if I take the formula A or B
link |
00:55:42.920
and A or not B and not A or B and not A or not B
link |
00:55:49.360
and take the conjunction of all four
link |
00:55:51.280
of those so called expressions,
link |
00:55:54.600
you can determine that no assignment of truth values
link |
00:55:59.080
to the variables A and B will allow that conjunction
link |
00:56:03.920
of what are called clauses to be true.
link |
00:56:09.200
So that's an example of a formula in propositional logic
link |
00:56:16.920
involving expressions based on the operations and, or, and not.
link |
00:56:23.800
That's an example of a problem which is not satisfiable.
link |
00:56:27.280
There is no solution that satisfies
link |
00:56:29.280
all of those constraints.
link |
00:56:31.200
I mean that's like one of the cleanest and fundamental
link |
00:56:33.800
problems in computer science.
link |
00:56:35.320
It's like a nice statement of a really hard problem.
link |
00:56:37.680
It's a nice statement of a really hard problem
link |
00:56:39.960
and what Cook showed is that every problem in NP
link |
00:56:50.120
can be reexpressed as an instance
link |
00:56:53.560
of the satisfiability problem.
link |
00:56:56.080
So to do that, he used the observation
link |
00:57:02.080
that a very simple abstract machine
link |
00:57:04.160
called the Turing machine can be used
link |
00:57:08.360
to describe any algorithm.
link |
00:57:14.960
An algorithm for any realistic computer
link |
00:57:17.800
can be translated into an equivalent algorithm
link |
00:57:22.840
on one of these Turing machines
link |
00:57:25.840
which are extremely simple.
link |
00:57:27.960
So a Turing machine, there's a tape and you can
link |
00:57:30.560
Yeah, you have data on a tape
link |
00:57:33.360
and you have basic instructions,
link |
00:57:35.720
a finite list of instructions which say,
link |
00:57:39.640
if you're reading a particular symbol on the tape
link |
00:57:43.520
and you're in a particular state,
link |
00:57:45.520
then you can move to a different state
link |
00:57:49.840
and change the state of the number
link |
00:57:51.400
or the element that you were looking at,
link |
00:57:53.760
the cell of the tape that you were looking at.
link |
00:57:55.760
And that was like a metaphor and a mathematical construct
link |
00:57:58.560
that Turing put together
link |
00:57:59.880
to represent all possible computation.
link |
00:58:02.200
All possible computation.
link |
00:58:03.600
Now, one of these so called Turing machines
link |
00:58:06.240
is too simple to be useful in practice,
link |
00:58:09.320
but for theoretical purposes,
link |
00:58:11.360
we can depend on the fact that an algorithm
link |
00:58:15.880
for any computer can be translated
link |
00:58:18.840
into one that would run on a Turing machine.
link |
00:58:21.320
And then using that fact,
link |
00:58:26.280
he could sort of describe
link |
00:58:31.240
any possible non deterministic polynomial time algorithm.
link |
00:58:35.640
Any algorithm for a problem in NP
link |
00:58:40.000
could be expressed as a sequence of moves
link |
00:58:44.520
of the Turing machine described
link |
00:58:47.360
in terms of reading a symbol on the tape
link |
00:58:54.160
while you're in a given state
link |
00:58:55.560
and moving to a new state and leaving behind a new symbol.
link |
00:59:00.000
And given that fact
link |
00:59:03.560
that any non deterministic polynomial time algorithm
link |
00:59:07.680
can be described by a list of such instructions,
link |
00:59:12.920
you could translate the problem
link |
00:59:15.880
into the language of the satisfiability problem.
link |
00:59:19.120
Is that amazing to you, by the way,
link |
00:59:20.360
if you take yourself back
link |
00:59:21.320
when you were first thinking about the space of problems?
link |
00:59:24.640
How amazing is that?
link |
00:59:26.720
It's astonishing.
link |
00:59:27.920
When you look at Cook's proof,
link |
00:59:30.320
it's not too difficult to sort of figure out
link |
00:59:34.520
why this is so,
link |
00:59:38.520
but the implications are staggering.
link |
00:59:40.720
It tells us that this, of all the problems in NP,
link |
00:59:46.240
all the problems where solutions are easy to check,
link |
00:59:49.720
they can all be rewritten
link |
00:59:53.320
in terms of the satisfiability problem.
link |
00:59:59.280
Yeah, it's adding so much more weight
link |
01:00:04.000
to the P equals NP question
link |
01:00:06.800
because all it takes is to show that one algorithm
link |
01:00:10.600
in this class.
link |
01:00:11.440
So the P versus NP can be re expressed
link |
01:00:13.760
as simply asking whether the satisfiability problem
link |
01:00:17.600
of propositional logic is solvable in polynomial time.
link |
01:00:23.520
But there's more.
link |
01:00:28.000
I encountered Cook's paper
link |
01:00:30.360
when he published it in a conference in 1971.
link |
01:00:34.600
Yeah, so when I saw Cook's paper
link |
01:00:37.760
and saw this reduction of each of the problems in NP
link |
01:00:44.440
by a uniform method to the satisfiability problem
link |
01:00:49.200
of propositional logic,
link |
01:00:52.600
that meant that the satisfiability problem
link |
01:00:54.600
was a universal combinatorial problem.
link |
01:00:59.320
And it occurred to me through experience I had had
link |
01:01:04.160
in trying to solve other combinatorial problems
link |
01:01:07.760
that there were many other problems
link |
01:01:10.440
which seemed to have that universal structure.
link |
01:01:16.040
And so I began looking for reductions
link |
01:01:21.600
from the satisfiability to other problems.
link |
01:01:26.080
And one of the other problems
link |
01:01:31.760
would be the so called integer programming problem
link |
01:01:35.680
of determining whether there's a solution
link |
01:01:40.280
to a set of linear inequalities involving integer variables.
link |
01:01:48.200
Just like linear programming,
link |
01:01:49.560
but there's a constraint that the variables
link |
01:01:51.720
must remain integers.
link |
01:01:53.640
In fact, must be the zero or one
link |
01:01:56.400
could only take on those values.
link |
01:01:58.520
And that makes the problem much harder.
link |
01:02:00.800
Yes, that makes the problem much harder.
link |
01:02:03.680
And it was not difficult to show
link |
01:02:07.360
that the satisfiability problem can be restated
link |
01:02:11.640
as an integer programming problem.
link |
01:02:13.880
So can you pause on that?
link |
01:02:15.200
Was that one of the first mappings that you tried to do?
link |
01:02:19.080
And how hard is that mapping?
link |
01:02:20.440
You said it wasn't hard to show,
link |
01:02:21.760
but that's a big leap.
link |
01:02:27.440
It is a big leap, yeah.
link |
01:02:29.360
Well, let me give you another example.
link |
01:02:32.960
Another problem in NP
link |
01:02:35.160
is whether a graph contains a clique of a given size.
link |
01:02:42.960
And now the question is,
link |
01:02:47.960
can we reduce the propositional logic problem
link |
01:02:51.200
to the problem of whether there's a clique
link |
01:02:55.480
of a certain size?
link |
01:02:58.720
Well, if you look at the propositional logic problem,
link |
01:03:01.280
it can be expressed as a number of clauses,
link |
01:03:05.560
each of which is a,
link |
01:03:11.080
of the form A or B or C,
link |
01:03:15.360
where A is either one of the variables in the problem
link |
01:03:18.360
or the negation of one of the variables.
link |
01:03:22.600
And an instance of the propositional logic problem
link |
01:03:30.200
can be rewritten using operations of Boolean logic,
link |
01:03:37.000
can be rewritten as the conjunction of a set of clauses,
link |
01:03:41.280
the AND of a set of ORs,
link |
01:03:43.680
where each clause is a disjunction, an OR of variables
link |
01:03:49.600
or negated variables.
link |
01:03:53.880
So the question in the satisfiability problem
link |
01:04:01.200
is whether those clauses can be simultaneously satisfied.
link |
01:04:07.160
Now, to satisfy all those clauses,
link |
01:04:09.080
you have to find one of the terms in each clause,
link |
01:04:13.920
which is going to be true in your truth assignment,
link |
01:04:20.800
but you can't make the same variable both true and false.
link |
01:04:24.680
So if you have the variable A in one clause
link |
01:04:29.600
and you want to satisfy that clause by making A true,
link |
01:04:34.240
you can't also make the complement of A true
link |
01:04:38.360
in some other clause.
link |
01:04:39.720
And so the goal is to make every single clause true
link |
01:04:43.080
if it's possible to satisfy this,
link |
01:04:45.200
and the way you make it true is at least...
link |
01:04:48.840
One term in the clause must be true.
link |
01:04:52.480
Got it.
link |
01:04:53.920
So now we, to convert this problem
link |
01:04:58.400
to something called the independent set problem,
link |
01:05:01.160
where you're just sort of asking for a set of vertices
link |
01:05:06.160
in a graph such that no two of them are adjacent,
link |
01:05:08.840
sort of the opposite of the clique problem.
link |
01:05:14.920
So we've seen that we can now express that as
link |
01:05:24.760
finding a set of terms, one in each clause,
link |
01:05:29.760
without picking both the variable
link |
01:05:33.440
and the negation of that variable,
link |
01:05:36.200
because if the variable is assigned the truth value,
link |
01:05:40.000
the negated variable has to have the opposite truth value.
link |
01:05:44.080
And so we can construct a graph where the vertices
link |
01:05:49.400
are the terms in all of the clauses,
link |
01:05:54.400
and you have an edge between two terms
link |
01:06:07.720
if an edge between two occurrences of terms,
link |
01:06:14.480
either if they're both in the same clause,
link |
01:06:16.720
because you're only picking one element from each clause,
link |
01:06:20.320
and also an edge between them if they represent
link |
01:06:23.680
opposite values of the same variable,
link |
01:06:26.160
because you can't make a variable both true and false.
link |
01:06:29.560
And so you get a graph where you have
link |
01:06:31.880
all of these occurrences of variables,
link |
01:06:34.360
you have edges, which mean that you're not allowed
link |
01:06:37.840
to choose both ends of the edge,
link |
01:06:41.120
either because they're in the same clause
link |
01:06:43.160
or they're negations of one another.
link |
01:06:46.360
All right, and that's a, first of all, sort of to zoom out,
link |
01:06:50.520
that's a really powerful idea that you can take a graph
link |
01:06:55.240
and connect it to a logic equation somehow,
link |
01:07:00.240
and do that mapping for all possible formulations
link |
01:07:04.240
of a particular problem on a graph.
link |
01:07:06.440
Yeah.
link |
01:07:07.280
I mean, that still is hard for me to believe.
link |
01:07:12.280
Yeah, it's hard for me to believe.
link |
01:07:14.400
It's hard for me to believe that that's possible.
link |
01:07:17.800
That they're, like, what do you make of that,
link |
01:07:20.840
that there's such a union of,
link |
01:07:24.840
there's such a friendship among all these problems across
link |
01:07:28.800
that somehow are akin to combinatorial algorithms,
link |
01:07:33.880
that they're all somehow related?
link |
01:07:35.920
I know it can be proven, but what do you make of it,
link |
01:07:39.960
that that's true?
link |
01:07:41.720
Well, that they just have the same expressive power.
link |
01:07:46.800
You can take any one of them
link |
01:07:49.600
and translate it into the terms of the other.
link |
01:07:53.520
The fact that they have the same expressive power
link |
01:07:55.600
also somehow means that they can be translatable.
link |
01:07:59.040
Right, and what I did in the 1971 paper
link |
01:08:03.560
was to take 21 fundamental problems,
link |
01:08:08.560
the commonly occurring problems of packing,
link |
01:08:12.400
covering, matching, and so forth,
link |
01:08:15.920
lying in the class NP,
link |
01:08:19.280
and show that the satisfiability problem
link |
01:08:21.920
can be reexpressed as any of those,
link |
01:08:24.320
that any of those have the same expressive power.
link |
01:08:30.040
And that was like throwing down the gauntlet
link |
01:08:32.000
of saying there's probably many more problems like this.
link |
01:08:35.920
Right.
link |
01:08:36.760
Saying that, look, that they're all the same.
link |
01:08:39.680
They're all the same, but not exactly.
link |
01:08:43.160
They're all the same in terms of whether they are
link |
01:08:49.000
rich enough to express any of the others.
link |
01:08:53.760
But that doesn't mean that they have
link |
01:08:55.320
the same computational complexity.
link |
01:08:57.800
But what we can say is that either all of these problems
link |
01:09:02.280
or none of them are solvable in polynomial time.
link |
01:09:05.880
Yeah, so what is NP completeness
link |
01:09:08.360
and NP hard as classes?
link |
01:09:11.120
Oh, that's just a small technicality.
link |
01:09:14.080
So when we're talking about decision problems,
link |
01:09:17.320
that means that the answer is just yes or no.
link |
01:09:21.000
There is a clique of size 15
link |
01:09:23.360
or there's not a clique of size 15.
link |
01:09:26.800
On the other hand, an optimization problem
link |
01:09:28.920
would be asking find the largest clique.
link |
01:09:33.200
The answer would not be yes or no.
link |
01:09:35.040
It would be 15.
link |
01:09:39.600
So when you're asking for the,
link |
01:09:42.960
when you're putting a valuation on the different solutions
link |
01:09:46.680
and you're asking for the one with the highest valuation,
link |
01:09:49.120
that's an optimization problem.
link |
01:09:51.440
And there's a very close affinity
link |
01:09:52.920
between the two kinds of problems.
link |
01:09:55.480
But the counterpart of being the hardest decision problem,
link |
01:10:02.360
the hardest yes, no problem,
link |
01:10:04.280
the counterpart of that is to minimize
link |
01:10:09.920
or maximize an objective function.
link |
01:10:13.440
And so a problem that's hardest in the class
link |
01:10:17.400
when viewed in terms of optimization,
link |
01:10:19.960
those are called NP hard rather than NP complete.
link |
01:10:24.480
And NP complete is for decision problems.
link |
01:10:26.280
And NP complete is for decision problems.
link |
01:10:28.740
So if somebody shows that P equals NP,
link |
01:10:35.620
what do you think that proof will look like
link |
01:10:39.460
if you were to put on yourself,
link |
01:10:41.540
if it's possible to show that as a proof
link |
01:10:45.340
or to demonstrate an algorithm?
link |
01:10:49.100
All I can say is that it will involve concepts
link |
01:10:52.260
that we do not now have and approaches that we don't have.
link |
01:10:56.420
Do you think those concepts are out there
link |
01:10:58.620
in terms of inside complexity theory,
link |
01:11:02.000
inside of computational analysis of algorithms?
link |
01:11:04.780
Do you think there's concepts
link |
01:11:05.860
that are totally outside of the box
link |
01:11:07.940
that we haven't considered yet?
link |
01:11:09.180
I think that if there is a proof that P is equal to NP
link |
01:11:13.180
or that P is unequal to NP,
link |
01:11:17.820
it'll depend on concepts that are now outside the box.
link |
01:11:22.320
Now, if that's shown either way, P equals NP or P not,
link |
01:11:25.940
well, actually P equals NP,
link |
01:11:28.260
what impact, you kind of mentioned a little bit,
link |
01:11:32.260
but can you linger on it?
link |
01:11:34.140
What kind of impact would it have
link |
01:11:36.780
on theoretical computer science
link |
01:11:38.340
and perhaps software based systems in general?
link |
01:11:42.220
Well, I think it would have enormous impact on the world
link |
01:11:46.260
in either way case.
link |
01:11:49.180
If P is unequal to NP, which is what we expect,
link |
01:11:53.280
then we know that for the great majority
link |
01:11:56.860
of the combinatorial problems that come up,
link |
01:11:59.500
since they're known to be NP complete,
link |
01:12:02.940
we're not going to be able to solve them
link |
01:12:05.060
by efficient algorithms.
link |
01:12:07.780
However, there's a little bit of hope
link |
01:12:11.620
in that it may be that we can solve most instances.
link |
01:12:16.560
All we know is that if a problem is not NP,
link |
01:12:19.860
then it can't be solved efficiently on all instances.
link |
01:12:22.920
But basically, if we find that P is unequal to NP,
link |
01:12:32.720
it will mean that we can't expect always
link |
01:12:35.320
to get the optimal solutions to these problems.
link |
01:12:38.680
And we have to depend on heuristics
link |
01:12:41.040
that perhaps work most of the time
link |
01:12:43.160
or give us good approximate solutions, but not.
link |
01:12:47.160
So we would turn our eye towards the heuristics
link |
01:12:51.760
with a little bit more acceptance and comfort on our hearts.
link |
01:12:56.400
Exactly.
link |
01:12:57.560
Okay, so let me ask a romanticized question.
link |
01:13:02.100
What to you is one of the most
link |
01:13:04.480
or the most beautiful combinatorial algorithm
link |
01:13:08.180
in your own life or just in general in the field
link |
01:13:10.880
that you've ever come across or have developed yourself?
link |
01:13:14.080
Oh, I like the stable matching problem
link |
01:13:17.760
or the stable marriage problem very much.
link |
01:13:22.760
What's the stable matching problem?
link |
01:13:25.120
Yeah.
link |
01:13:26.400
Imagine that you want to marry off N boys with N girls.
link |
01:13:37.120
And each boy has an ordered list
link |
01:13:39.900
of his preferences among the girls.
link |
01:13:42.320
His first choice, his second choice,
link |
01:13:44.760
through her, Nth choice.
link |
01:13:47.400
And each girl also has an ordering of the boys,
link |
01:13:55.400
his first choice, second choice, and so on.
link |
01:13:58.880
And we'll say that a matching,
link |
01:14:03.480
a one to one matching of the boys with the girls is stable
link |
01:14:07.560
if there are no two couples in the matching
link |
01:14:15.120
such that the boy in the first couple
link |
01:14:18.640
prefers the girl in the second couple to her mate
link |
01:14:23.200
and she prefers the boy to her current mate.
link |
01:14:27.040
In other words, if the matching is stable
link |
01:14:31.280
if there is no pair who want to run away with each other
link |
01:14:35.440
leaving their partners behind.
link |
01:14:38.760
Gosh, yeah.
link |
01:14:39.600
Yeah.
link |
01:14:44.920
Actually, this is relevant to matching residents
link |
01:14:49.100
with hospitals and some other real life problems,
link |
01:14:52.280
although not quite in the form that I described.
link |
01:14:56.960
So it turns out that there is,
link |
01:15:00.480
for any set of preferences, a stable matching exists.
link |
01:15:06.000
And moreover, it can be computed
link |
01:15:11.000
by a simple algorithm
link |
01:15:14.040
in which each boy starts making proposals to girls.
link |
01:15:21.000
And if the girl receives the proposal,
link |
01:15:23.940
she accepts it tentatively,
link |
01:15:25.920
but she can drop it later
link |
01:15:32.800
if she gets a better proposal from her point of view.
link |
01:15:36.720
And the boys start going down their lists
link |
01:15:39.000
proposing to their first, second, third choices
link |
01:15:41.980
until stopping when a proposal is accepted.
link |
01:15:50.400
But the girls meanwhile are watching the proposals
link |
01:15:53.360
that are coming into them.
link |
01:15:55.380
And the girl will drop her current partner
link |
01:16:01.080
if she gets a better proposal.
link |
01:16:03.520
And the boys never go back through the list?
link |
01:16:06.280
They never go back, yeah.
link |
01:16:07.600
So once they've been denied.
link |
01:16:11.720
They don't try again.
link |
01:16:12.800
They don't try again
link |
01:16:14.640
because the girls are always improving their status
link |
01:16:19.240
as they receive better and better proposals.
link |
01:16:22.800
The boys are going down their lists starting
link |
01:16:25.560
with their top preferences.
link |
01:16:28.600
And one can prove that the process will come to an end
link |
01:16:39.540
where everybody will get matched with somebody
link |
01:16:43.440
and you won't have any pair
link |
01:16:46.520
that want to abscond from each other.
link |
01:16:50.360
Do you find the proof or the algorithm itself beautiful?
link |
01:16:54.120
Or is it the fact that with the simplicity
link |
01:16:56.720
of just the two marching,
link |
01:16:59.560
I mean the simplicity of the underlying rule
link |
01:17:01.760
of the algorithm, is that the beautiful part?
link |
01:17:04.820
Both I would say.
link |
01:17:07.560
And you also have the observation that you might ask
link |
01:17:11.760
who is better off, the boys who are doing the proposing
link |
01:17:14.680
or the girls who are reacting to proposals.
link |
01:17:17.760
And it turns out that it's the boys
link |
01:17:20.080
who are doing the best.
link |
01:17:22.920
That is, each boy is doing at least as well
link |
01:17:25.840
as he could do in any other staple matching.
link |
01:17:30.480
So there's a sort of lesson for the boys
link |
01:17:33.180
that you should go out and be proactive
link |
01:17:36.080
and make those proposals.
link |
01:17:38.680
Go for broke.
link |
01:17:41.160
I don't know if this is directly mappable philosophically
link |
01:17:44.280
to our society, but certainly seems
link |
01:17:46.800
like a compelling notion.
link |
01:17:48.160
And like you said, there's probably a lot
link |
01:17:51.360
of actual real world problems that this could be mapped to.
link |
01:17:54.600
Yeah, well you get complications.
link |
01:17:58.600
For example, what happens when a husband and wife
link |
01:18:01.500
want to be assigned to the same hospital?
link |
01:18:03.720
So you have to take those constraints into account.
link |
01:18:10.520
And then the problem becomes NP hard.
link |
01:18:15.920
Why is it a problem for the husband and wife
link |
01:18:18.040
to be assigned to the same hospital?
link |
01:18:20.000
No, it's desirable.
link |
01:18:22.480
Or at least go to the same city.
link |
01:18:24.080
So you can't, if you're assigning residents to hospitals.
link |
01:18:29.560
And then you have some preferences
link |
01:18:32.080
for the husband and the wife or for the hospitals.
link |
01:18:34.600
The residents have their own preferences.
link |
01:18:39.920
Residents both male and female have their own preferences.
link |
01:18:44.760
The hospitals have their preferences.
link |
01:18:47.720
But if resident A, the boy, is going to Philadelphia,
link |
01:18:55.960
then you'd like his wife also to be assigned
link |
01:19:01.720
to a hospital in Philadelphia.
link |
01:19:04.440
Which step makes it a NP hard problem that you mentioned?
link |
01:19:08.000
The fact that you have this additional constraint.
link |
01:19:11.120
That it's not just the preferences of individuals,
link |
01:19:15.000
but the fact that the two partners to a marriage
link |
01:19:19.840
have to be assigned to the same place.
link |
01:19:22.880
I'm being a little dense.
link |
01:19:29.320
The perfect matching, no, not the perfect,
link |
01:19:31.600
stable matching is what you referred to.
link |
01:19:33.880
That's when two partners are trying to.
link |
01:19:36.160
Okay, what's confusing you is that in the first
link |
01:19:39.280
interpretation of the problem,
link |
01:19:40.740
I had boys matching with girls.
link |
01:19:42.900
Yes.
link |
01:19:44.220
In the second interpretation,
link |
01:19:46.540
you have humans matching with institutions.
link |
01:19:49.660
With institutions.
link |
01:19:51.100
I, and there's a coupling between within the,
link |
01:19:54.380
gotcha, within the humans.
link |
01:19:56.020
Yeah.
link |
01:19:56.860
Any added little constraint will make it an NP hard problem.
link |
01:20:00.420
Well, yeah.
link |
01:20:03.440
Okay.
link |
01:20:05.060
By the way, the algorithm you mentioned
link |
01:20:06.220
wasn't one of yours or no?
link |
01:20:07.860
No, no, that was due to Gale and Shapley
link |
01:20:11.420
and my friend David Gale passed away
link |
01:20:15.500
before he could get part of a Nobel Prize,
link |
01:20:18.060
but his partner Shapley shared in a Nobel Prize
link |
01:20:22.780
with somebody else for.
link |
01:20:24.340
Economics?
link |
01:20:25.180
For economics.
link |
01:20:28.460
For ideas stemming from the stable matching idea.
link |
01:20:32.580
So you've also have developed yourself
link |
01:20:35.220
some elegant, beautiful algorithms.
link |
01:20:38.260
Again, picking your children,
link |
01:20:39.720
so the Robin Karp algorithm for string searching,
link |
01:20:43.380
pattern matching, Edmund Karp algorithm for max flows
link |
01:20:46.220
we mentioned, Hopcroft Karp algorithm for finding
link |
01:20:49.060
maximum cardinality matchings in bipartite graphs.
link |
01:20:52.180
Is there ones that stand out to you,
link |
01:20:55.460
ones you're most proud of or just
link |
01:20:59.460
whether it's beauty, elegance,
link |
01:21:01.740
or just being the right discovery development
link |
01:21:06.420
in your life that you're especially proud of?
link |
01:21:10.100
I like the Rabin Karp algorithm
link |
01:21:12.180
because it illustrates the power of randomization.
link |
01:21:17.540
So the problem there
link |
01:21:23.100
is to decide whether a given long string of symbols
link |
01:21:28.100
is to decide whether a given long string of symbols
link |
01:21:34.340
from some alphabet contains a given word,
link |
01:21:39.260
whether a particular word occurs
link |
01:21:41.500
within some very much longer word.
link |
01:21:45.500
And so the idea of the algorithm
link |
01:21:52.340
is to associate with the word that we're looking for,
link |
01:21:57.220
a fingerprint, some number,
link |
01:22:02.820
or some combinatorial object that describes that word,
link |
01:22:10.380
and then to look for an occurrence of that same fingerprint
link |
01:22:13.580
as you slide along the longer word.
link |
01:22:18.540
And what we do is we associate with each word a number.
link |
01:22:23.540
So first of all, we think of the letters
link |
01:22:26.540
that occur in a word as the digits of, let's say,
link |
01:22:30.980
decimal or whatever base here,
link |
01:22:36.780
whatever number of different symbols there are.
link |
01:22:40.020
That's the base of the numbers, yeah.
link |
01:22:42.340
Right, so every word can then be thought of as a number
link |
01:22:46.140
with the letters being the digits of that number.
link |
01:22:50.340
And then we pick a random prime number in a certain range,
link |
01:22:55.540
and we take that word viewed as a number,
link |
01:23:00.060
and take the remainder on dividing that number by the prime.
link |
01:23:09.580
So coming up with a nice hash function.
link |
01:23:11.820
It's a kind of hash function.
link |
01:23:13.660
Yeah, it gives you a little shortcut
link |
01:23:17.700
for that particular word.
link |
01:23:22.500
Yeah, so that's the...
link |
01:23:26.380
It's very different than other algorithms of its kind
link |
01:23:31.060
that we're trying to do search, string matching.
link |
01:23:35.540
Yeah, which usually are combinatorial
link |
01:23:38.060
and don't involve the idea of taking a random fingerprint.
link |
01:23:42.620
Yes.
link |
01:23:43.580
And doing the fingerprinting has two advantages.
link |
01:23:48.020
One is that as we slide along the long word,
link |
01:23:51.580
digit by digit, we keep a window of a certain size,
link |
01:23:57.460
the size of the word we're looking for,
link |
01:24:00.660
and we compute the fingerprint
link |
01:24:03.380
of every stretch of that length.
link |
01:24:07.620
And it turns out that just a couple of arithmetic operations
link |
01:24:11.260
will take you from the fingerprint of one part
link |
01:24:15.300
to what you get when you slide over by one position.
link |
01:24:19.860
So the computation of all the fingerprints is simple.
link |
01:24:26.740
And secondly, it's unlikely if the prime is chosen randomly
link |
01:24:32.780
from a certain range that you will get two of the segments
link |
01:24:37.500
in question having the same fingerprint.
link |
01:24:39.980
Right.
link |
01:24:41.660
And so there's a small probability of error
link |
01:24:43.940
which can be checked after the fact,
link |
01:24:46.460
and also the ease of doing the computation
link |
01:24:48.700
because you're working with these fingerprints
link |
01:24:51.580
which are remainder's modulo some big prime.
link |
01:24:55.620
So that's the magical thing about randomized algorithms
link |
01:24:58.020
is that if you add a little bit of randomness,
link |
01:25:02.420
it somehow allows you to take a pretty naive approach,
link |
01:25:05.380
a simple looking approach, and allow it to run extremely well.
link |
01:25:10.660
So can you maybe take a step back and say
link |
01:25:14.340
what is a randomized algorithm, this category of algorithms?
link |
01:25:18.300
Well, it's just the ability to draw a random number
link |
01:25:22.460
from such, from some range
link |
01:25:27.580
or to associate a random number with some object
link |
01:25:32.260
or to draw that random from some set.
link |
01:25:35.220
So another example is very simple
link |
01:25:41.940
if we're conducting a presidential election
link |
01:25:46.420
and we would like to pick the winner.
link |
01:25:52.300
In principle, we could draw a random sample
link |
01:25:57.300
of all of the voters in the country.
link |
01:25:59.300
And if it was of substantial size, say a few thousand,
link |
01:26:05.700
then the most popular candidate in that group
link |
01:26:08.940
would be very likely to be the correct choice
link |
01:26:12.280
that would come out of counting all the millions of votes.
link |
01:26:15.820
And of course we can't do this because first of all,
link |
01:26:18.460
everybody has to feel that his or her vote counted.
link |
01:26:21.900
And secondly, we can't really do a purely random sample
link |
01:26:25.300
from that population.
link |
01:26:28.000
And I guess thirdly, there could be a tie
link |
01:26:30.060
in which case we wouldn't have a significant difference
link |
01:26:34.100
between two candidates.
link |
01:26:36.380
But those things aside,
link |
01:26:37.580
if you didn't have all that messiness of human beings,
link |
01:26:40.500
you could prove that that kind of random picking
link |
01:26:43.100
would come up again.
link |
01:26:43.940
You just said random picking would solve the problem
link |
01:26:48.020
with a very low probability of error.
link |
01:26:51.380
Another example is testing whether a number is prime.
link |
01:26:55.540
So if I wanna test whether 17 is prime,
link |
01:27:01.760
I could pick any number between one and 17,
link |
01:27:08.460
raise it to the 16th power modulo 17,
link |
01:27:12.340
and you should get back the original number.
link |
01:27:15.060
That's a famous formula due to Fermat about,
link |
01:27:19.620
it's called Fermat's Little Theorem,
link |
01:27:21.240
that if you take any number a in the range
link |
01:27:29.340
zero through n minus one,
link |
01:27:32.060
and raise it to the n minus 1th power modulo n,
link |
01:27:38.260
you'll get back the number a if a is prime.
link |
01:27:43.860
So if you don't get back the number a,
link |
01:27:45.900
that's a proof that a number is not prime.
link |
01:27:48.300
And you can show that suitably defined
link |
01:27:57.420
the probability that you will get a value unequaled,
link |
01:28:09.300
you will get a violation of Fermat's result is very high.
link |
01:28:14.300
And so this gives you a way of rapidly proving
link |
01:28:18.580
that a number is not prime.
link |
01:28:21.020
It's a little more complicated than that
link |
01:28:22.800
because there are certain values of n
link |
01:28:26.300
where something a little more elaborate has to be done,
link |
01:28:28.600
but that's the basic idea.
link |
01:28:32.580
Taking an identity that holds for primes,
link |
01:28:34.900
and therefore, if it ever fails on any instance
link |
01:28:39.460
for a non prime, you know that the number is not prime.
link |
01:28:43.460
It's a quick choice, a fast choice,
link |
01:28:45.660
fast proof that a number is not prime.
link |
01:28:48.740
Can you maybe elaborate a little bit more
link |
01:28:50.940
what's your intuition why randomness works so well
link |
01:28:54.200
and results in such simple algorithms?
link |
01:28:57.500
Well, the example of conducting an election
link |
01:29:00.860
where you could take, in theory, you could take a sample
link |
01:29:04.340
and depend on the validity of the sample
link |
01:29:07.060
to really represent the whole
link |
01:29:09.180
is just the basic fact of statistics,
link |
01:29:12.040
which gives a lot of opportunities.
link |
01:29:17.780
And I actually exploited that sort of random sampling idea
link |
01:29:23.180
in designing an algorithm
link |
01:29:25.780
for counting the number of solutions
link |
01:29:30.100
that satisfy a particular formula
link |
01:29:33.820
and propositional logic.
link |
01:29:37.640
A particular, so some version of the satisfiability problem?
link |
01:29:44.380
A version of the satisfiability problem.
link |
01:29:47.780
Is there some interesting insight
link |
01:29:49.420
that you wanna elaborate on,
link |
01:29:50.460
like what some aspect of that algorithm
link |
01:29:53.300
that might be useful to describe?
link |
01:29:57.500
So you have a collection of formulas
link |
01:30:02.500
and you want to count the number of solutions
link |
01:30:14.400
that satisfy at least one of the formulas.
link |
01:30:20.440
And you can count the number of solutions
link |
01:30:23.500
that satisfy any particular one of the formulas,
link |
01:30:27.360
but you have to account for the fact
link |
01:30:29.960
that that solution might be counted many times
link |
01:30:33.720
if it solves more than one of the formulas.
link |
01:30:40.880
And so what you do is you sample from the formulas
link |
01:30:46.880
according to the number of solutions
link |
01:30:49.480
that satisfy each individual one.
link |
01:30:53.220
In that way, you draw a random solution,
link |
01:30:55.680
but then you correct by looking at
link |
01:30:59.040
the number of formulas that satisfy that random solution
link |
01:31:04.480
and don't double count.
link |
01:31:08.880
So you can think of it this way.
link |
01:31:11.640
So you have a matrix of zeros and ones
link |
01:31:16.040
and you wanna know how many columns of that matrix
link |
01:31:18.980
contain at least one one.
link |
01:31:22.400
And you can count in each row how many ones there are.
link |
01:31:26.040
So what you can do is draw from the rows
link |
01:31:29.440
according to the number of ones.
link |
01:31:31.700
If a row has more ones, it gets drawn more frequently.
link |
01:31:35.980
But then if you draw from that row,
link |
01:31:39.880
you have to go up the column
link |
01:31:41.480
and looking at where that same one is repeated
link |
01:31:44.620
in different rows and only count it as a success or a hit
link |
01:31:51.240
if it's the earliest row that contains the one.
link |
01:31:54.380
And that gives you a robust statistical estimate
link |
01:32:00.300
of the total number of columns
link |
01:32:02.020
that contain at least one of the ones.
link |
01:32:04.540
So that is an example of the same principle
link |
01:32:09.020
that was used in studying random sampling.
link |
01:32:13.380
Another viewpoint is that if you have a phenomenon
link |
01:32:18.940
that occurs almost all the time,
link |
01:32:21.400
then if you sample one of the occasions where it occurs,
link |
01:32:28.780
you're most likely to,
link |
01:32:30.640
and you're looking for an occurrence,
link |
01:32:32.640
a random occurrence is likely to work.
link |
01:32:34.880
So that comes up in solving identities,
link |
01:32:39.480
solving algebraic identities.
link |
01:32:42.680
You get two formulas that may look very different.
link |
01:32:46.480
You wanna know if they're really identical.
link |
01:32:49.000
What you can do is just pick a random value
link |
01:32:52.920
and evaluate the formulas at that value
link |
01:32:56.040
and see if they agree.
link |
01:32:58.840
And you depend on the fact
link |
01:33:02.000
that if the formulas are distinct,
link |
01:33:04.360
then they're gonna disagree a lot.
link |
01:33:06.840
And so therefore, a random choice
link |
01:33:08.480
will exhibit the disagreement.
link |
01:33:12.760
If there are many ways for the two to disagree
link |
01:33:16.560
and you only need to find one disagreement,
link |
01:33:18.560
then random choice is likely to yield it.
link |
01:33:22.600
And in general, so we've just talked
link |
01:33:24.560
about randomized algorithms,
link |
01:33:26.000
but we can look at the probabilistic analysis of algorithms.
link |
01:33:29.680
And that gives us an opportunity to step back
link |
01:33:32.040
and as you said, everything we've been talking about
link |
01:33:35.600
is worst case analysis.
link |
01:33:38.000
Could you maybe comment on the usefulness
link |
01:33:43.480
and the power of worst case analysis
link |
01:33:45.400
versus best case analysis, average case, probabilistic?
link |
01:33:51.160
How do we think about the future
link |
01:33:52.760
of theoretical computer science, computer science
link |
01:33:56.600
in the kind of analysis we do of algorithms?
link |
01:33:59.080
Does worst case analysis still have a place,
link |
01:34:01.600
an important place?
link |
01:34:02.760
Or do we want to try to move forward
link |
01:34:04.600
towards kind of average case analysis?
link |
01:34:07.240
And what are the challenges there?
link |
01:34:09.320
So if worst case analysis shows
link |
01:34:11.560
that an algorithm is always good,
link |
01:34:15.280
that's fine.
link |
01:34:17.240
If worst case analysis is used to show that the problem,
link |
01:34:25.520
that the solution is not always good,
link |
01:34:29.000
then you have to step back and do something else
link |
01:34:32.120
to ask how often will you get a good solution?
link |
01:34:36.280
Just to pause on that for a second,
link |
01:34:38.040
that's so beautifully put
link |
01:34:40.160
because I think we tend to judge algorithms.
link |
01:34:43.280
We throw them in the trash
link |
01:34:45.440
the moment their worst case is shown to be bad.
link |
01:34:48.240
Right, and that's unfortunate.
link |
01:34:50.680
I think a good example is going back
link |
01:34:56.880
to the satisfiability problem.
link |
01:35:00.120
There are very powerful programs called SAT solvers
link |
01:35:04.480
which in practice fairly reliably solve instances
link |
01:35:09.920
with many millions of variables
link |
01:35:11.760
that arise in digital design
link |
01:35:14.200
or in proving programs correct in other applications.
link |
01:35:20.200
And so in many application areas,
link |
01:35:24.480
even though satisfiability as we've already discussed
link |
01:35:27.760
is NP complete, the SAT solvers will work so well
link |
01:35:34.840
that the people in that discipline
link |
01:35:37.240
tend to think of satisfiability as an easy problem.
link |
01:35:40.040
So in other words, just for some reason
link |
01:35:45.160
that we don't entirely understand,
link |
01:35:47.640
the instances that people formulate
link |
01:35:50.480
in designing digital circuits or other applications
link |
01:35:54.320
are such that satisfiability is not hard to check
link |
01:36:04.440
and even searching for a satisfying solution
link |
01:36:07.320
can be done efficiently in practice.
link |
01:36:11.520
And there are many examples.
link |
01:36:13.200
For example, we talked about the traveling salesman problem.
link |
01:36:18.160
So just to refresh our memories,
link |
01:36:21.320
the problem is you've got a set of cities,
link |
01:36:23.440
you have pairwise distances between cities
link |
01:36:28.560
and you want to find a tour through all the cities
link |
01:36:31.320
that minimizes the total cost of all the edges traversed,
link |
01:36:36.320
all the trips between cities.
link |
01:36:38.800
The problem is NP hard,
link |
01:36:41.840
but people using integer programming codes
link |
01:36:46.960
together with some other mathematical tricks
link |
01:36:51.400
can solve geometric instances of the problem
link |
01:36:57.080
where the cities are, let's say points in the plane
link |
01:37:01.000
and get optimal solutions to problems
link |
01:37:03.120
with tens of thousands of cities.
link |
01:37:05.120
Actually, it'll take a few computer months
link |
01:37:08.240
to solve a problem of that size,
link |
01:37:10.280
but for problems of size a thousand or two,
link |
01:37:13.200
it'll rapidly get optimal solutions,
link |
01:37:16.320
provably optimal solutions,
link |
01:37:19.000
even though again, we know that it's unlikely
link |
01:37:23.000
that the traveling salesman problem
link |
01:37:25.760
can be solved in polynomial time.
link |
01:37:28.440
Are there methodologies like rigorous systematic methodologies
link |
01:37:33.440
for, you said in practice.
link |
01:37:38.320
In practice, this algorithm's pretty good.
link |
01:37:40.040
Are there systematic ways of saying
link |
01:37:42.160
in practice, this algorithm's pretty good?
link |
01:37:43.800
So in other words, average case analysis.
link |
01:37:46.080
Or you've also mentioned that average case
link |
01:37:49.060
kind of requires you to understand what the typical case is,
link |
01:37:52.680
typical instances, and that might be really difficult.
link |
01:37:55.480
That's very difficult.
link |
01:37:56.580
So after I did my original work
link |
01:37:59.720
on showing all these problems through NP complete,
link |
01:38:06.600
I looked around for a way to shed some positive light
link |
01:38:11.160
on combinatorial algorithms.
link |
01:38:13.800
And what I tried to do was to study problems,
link |
01:38:19.640
behavior on the average or with high probability.
link |
01:38:24.600
But I had to make some assumptions
link |
01:38:26.160
about what's the probability space?
link |
01:38:29.720
What's the sample space?
link |
01:38:30.860
What do we mean by typical problems?
link |
01:38:33.860
That's very hard to say.
link |
01:38:35.280
So I took the easy way out
link |
01:38:37.680
and made some very simplistic assumptions.
link |
01:38:40.500
So I assumed, for example,
link |
01:38:42.000
that if we were generating a graph
link |
01:38:44.420
with a certain number of vertices and edges,
link |
01:38:47.440
then we would generate the graph
link |
01:38:48.920
by simply choosing one edge at a time at random
link |
01:38:53.840
until we got the right number of edges.
link |
01:38:56.840
That's a particular model of random graphs
link |
01:38:59.800
that has been studied mathematically a lot.
link |
01:39:02.900
And within that model,
link |
01:39:05.120
I could prove all kinds of wonderful things,
link |
01:39:07.560
I and others who also worked on this.
link |
01:39:10.640
So we could show that we know exactly
link |
01:39:15.120
how many edges there have to be
link |
01:39:16.760
in order for there be a so called Hamiltonian circuit.
link |
01:39:24.040
That's a cycle that visits each vertex exactly once.
link |
01:39:31.560
We know that if the number of edges
link |
01:39:35.240
is a little bit more than n log n,
link |
01:39:37.520
where n is the number of vertices,
link |
01:39:39.160
then such a cycle is very likely to exist.
link |
01:39:44.000
And we can give a heuristic
link |
01:39:45.680
that will find it with high probability.
link |
01:39:48.880
And the community in which I was working
link |
01:39:54.880
got a lot of results along these lines.
link |
01:39:58.520
But the field tended to be rather lukewarm
link |
01:40:04.080
about accepting these results as meaningful
link |
01:40:07.340
because we were making such a simplistic assumption
link |
01:40:09.880
about the kinds of graphs that we would be dealing with.
link |
01:40:13.960
So we could show all kinds of wonderful things,
link |
01:40:16.000
it was a great playground, I enjoyed doing it.
link |
01:40:18.880
But after a while, I concluded that
link |
01:40:27.240
it didn't have a lot of bite
link |
01:40:29.040
in terms of the practical application.
link |
01:40:31.640
Oh the, okay, so there's too much
link |
01:40:33.480
into the world of toy problems.
link |
01:40:35.280
Yeah.
link |
01:40:36.120
That can, okay.
link |
01:40:36.960
But all right, is there a way to find
link |
01:40:41.640
nice representative real world impactful instances
link |
01:40:45.120
of a problem on which demonstrate that an algorithm is good?
link |
01:40:48.840
So this is kind of like the machine learning world,
link |
01:40:51.360
that's kind of what they at his best tries to do
link |
01:40:54.200
is find a data set from like the real world
link |
01:40:57.920
and show the performance, all the conferences
link |
01:41:02.040
are all focused on beating the performance
link |
01:41:04.480
of on that real world data set.
link |
01:41:07.160
Is there an equivalent in complexity analysis?
link |
01:41:11.680
Not really, Don Knuth started to collect examples
link |
01:41:19.520
of graphs coming from various places.
link |
01:41:21.640
So he would have a whole zoo of different graphs
link |
01:41:26.160
that he could choose from and he could study
link |
01:41:28.480
the performance of algorithms on different types of graphs.
link |
01:41:31.640
But there it's really important and compelling
link |
01:41:37.320
to be able to define a class of graphs.
link |
01:41:41.320
The actual act of defining a class of graphs
link |
01:41:44.080
that you're interested in, it seems to be
link |
01:41:46.600
a non trivial step if we're talking about instances
link |
01:41:49.480
that we should care about in the real world.
link |
01:41:51.560
Yeah, there's nothing available there
link |
01:41:55.880
that would be analogous to the training set
link |
01:41:58.800
for supervised learning where you sort of assume
link |
01:42:02.360
that the world has given you a bunch
link |
01:42:05.520
of examples to work with.
link |
01:42:10.200
We don't really have that for problems,
link |
01:42:14.560
for combinatorial problems on graphs and networks.
link |
01:42:18.200
You know, there's been a huge growth,
link |
01:42:21.000
a big growth of data sets available.
link |
01:42:23.960
Do you think some aspect of theoretical computer science
link |
01:42:28.200
might be contradicting my own question while saying it,
link |
01:42:30.640
but will there be some aspect,
link |
01:42:33.400
an empirical aspect of theoretical computer science
link |
01:42:36.920
which will allow the fact that these data sets are huge,
link |
01:42:41.080
we'll start using them for analysis.
link |
01:42:44.080
Sort of, you know, if you want to say something
link |
01:42:46.920
about a graph algorithm, you might take
link |
01:42:50.720
a social network like Facebook and looking at subgraphs
link |
01:42:55.160
of that and prove something about the Facebook graph
link |
01:42:58.560
and be respected, and at the same time,
link |
01:43:01.120
be respected in the theoretical computer science community.
link |
01:43:03.840
That hasn't been achieved yet, I'm afraid.
link |
01:43:06.240
Is that P equals NP, is that impossible?
link |
01:43:10.960
Is it impossible to publish a successful paper
link |
01:43:14.560
in the theoretical computer science community
link |
01:43:17.080
that shows some performance on a real world data set?
link |
01:43:22.080
Or is that really just those are two different worlds?
link |
01:43:25.320
They haven't really come together.
link |
01:43:27.160
I would say that there is a field
link |
01:43:31.160
of experimental algorithmics where people,
link |
01:43:34.640
sometimes they're given some family of examples.
link |
01:43:39.320
Sometimes they just generate them at random
link |
01:43:41.960
and they report on performance,
link |
01:43:45.920
but there's no convincing evidence
link |
01:43:50.920
that the sample is representative of anything at all.
link |
01:43:57.600
So let me ask, in terms of breakthroughs
link |
01:44:00.760
and open problems, what are the most compelling
link |
01:44:04.200
open problems to you and what possible breakthroughs
link |
01:44:07.000
do you see in the near term
link |
01:44:08.280
in terms of theoretical computer science?
link |
01:44:13.720
Well, there are all kinds of relationships
link |
01:44:15.480
among complexity classes that can be studied,
link |
01:44:18.920
just to mention one thing, I wrote a paper
link |
01:44:22.960
with Richard Lipton in 1979,
link |
01:44:28.600
where we asked the following question.
link |
01:44:34.520
If you take a combinatorial problem in NP, let's say,
link |
01:44:39.520
and you choose, and you pick the size of the problem,
link |
01:44:49.520
say it's a traveling salesman problem, but of size 52,
link |
01:44:55.720
and you ask, could you get an efficient,
link |
01:45:00.240
a small Boolean circuit tailored for that size, 52,
link |
01:45:05.240
where you could feed the edges of the graph
link |
01:45:08.240
in as Boolean inputs and get, as an output,
link |
01:45:12.240
the question of whether or not
link |
01:45:13.560
there's a tour of a certain length.
link |
01:45:16.760
And that would, in other words, briefly,
link |
01:45:19.600
what you would say in that case
link |
01:45:21.480
is that the problem has small circuits,
link |
01:45:24.240
polynomial size circuits.
link |
01:45:28.200
Now, we know that if P is equal to NP,
link |
01:45:31.280
then, in fact, these problems will have small circuits,
link |
01:45:35.800
but what about the converse?
link |
01:45:37.400
Could a problem have small circuits,
link |
01:45:39.240
meaning that an algorithm tailored to any particular size
link |
01:45:43.440
could work well, and yet not be a polynomial time algorithm?
link |
01:45:48.440
That is, you couldn't write it as a single,
link |
01:45:50.120
uniform algorithm, good for all sizes.
link |
01:45:52.960
Just to clarify, small circuits
link |
01:45:55.800
for a problem of particular size,
link |
01:45:57.720
by small circuits for a problem of particular size,
link |
01:46:02.200
or even further constraint,
link |
01:46:04.000
small circuit for a particular...
link |
01:46:07.480
No, for all the inputs of that size.
link |
01:46:10.160
Is that a trivial problem for a particular instance?
link |
01:46:13.680
So, coming up, an automated way
link |
01:46:15.640
of coming up with a circuit.
link |
01:46:17.960
I guess that's just an answer.
link |
01:46:19.200
That would be hard, yeah.
link |
01:46:22.040
But there's the existential question.
link |
01:46:25.400
Everybody talks nowadays about existential questions.
link |
01:46:29.000
Existential challenges.
link |
01:46:35.640
You could ask the question,
link |
01:46:38.880
does the Hamiltonian circuit problem
link |
01:46:43.960
have a small circuit for every size,
link |
01:46:49.440
for each size, a different small circuit?
link |
01:46:51.800
In other words, could you tailor solutions
link |
01:46:55.600
depending on the size, and get polynomial size?
link |
01:47:00.560
Even if P is not equal to NP.
link |
01:47:02.640
Right.
link |
01:47:06.680
That would be fascinating if that's true.
link |
01:47:08.600
Yeah, what we proved is that if that were possible,
link |
01:47:14.760
then something strange would happen in complexity theory.
link |
01:47:18.840
Some high level class which I could briefly describe,
link |
01:47:26.800
something strange would happen.
link |
01:47:28.360
So, I'll take a stab at describing what I mean.
link |
01:47:31.960
Sure, let's go there.
link |
01:47:33.880
So, we have to define this hierarchy
link |
01:47:37.640
in which the first level of the hierarchy is P,
link |
01:47:41.440
and the second level is NP.
link |
01:47:44.080
And what is NP?
link |
01:47:45.240
NP involves statements of the form
link |
01:47:48.200
there exists a something such that something holds.
link |
01:47:53.720
So, for example, there exists the coloring
link |
01:47:59.960
such that a graph can be colored
link |
01:48:01.880
with only that number of colors.
link |
01:48:06.640
Or there exists a Hamiltonian circuit.
link |
01:48:09.120
There's a statement about this graph.
link |
01:48:10.800
Yeah, so the NP deals with statements of that kind,
link |
01:48:22.840
that there exists a solution.
link |
01:48:26.200
Now, you could imagine a more complicated expression
link |
01:48:32.600
which says for all x there exists a y
link |
01:48:38.600
such that some proposition holds involving both x and y.
link |
01:48:47.200
So, that would say, for example, in game theory,
link |
01:48:50.040
for all strategies for the first player,
link |
01:48:54.920
there exists a strategy for the second player
link |
01:48:57.720
such that the first player wins.
link |
01:48:59.520
That would be at the second level of the hierarchy.
link |
01:49:03.360
The third level would be there exists an A
link |
01:49:06.000
such that for all B there exists a C,
link |
01:49:08.400
that something holds.
link |
01:49:09.240
And you could imagine going higher and higher
link |
01:49:11.200
in the hierarchy.
link |
01:49:12.680
And you'd expect that the complexity classes
link |
01:49:17.480
that correspond to those different cases
link |
01:49:22.400
would get bigger and bigger.
link |
01:49:27.080
What do you mean by bigger and bigger?
link |
01:49:28.240
Sorry, sorry.
link |
01:49:29.520
They'd get harder and harder to solve.
link |
01:49:30.720
Harder and harder, right.
link |
01:49:32.360
Harder and harder to solve.
link |
01:49:35.360
And what Lipton and I showed was
link |
01:49:37.720
that if NP had small circuits,
link |
01:49:41.560
then this hierarchy would collapse down
link |
01:49:44.160
to the second level.
link |
01:49:46.200
In other words, you wouldn't get any more mileage
link |
01:49:48.400
by complicating your expressions with three quantifiers
link |
01:49:51.520
or four quantifiers or any number.
link |
01:49:55.400
I'm not sure what to make of that exactly.
link |
01:49:57.720
Well, I think it would be evidence
link |
01:49:59.280
that NP doesn't have small circuits
link |
01:50:02.920
because something so bizarre would happen.
link |
01:50:07.080
But again, it's only evidence, not proof.
link |
01:50:09.000
Well, yeah, that's not even evidence
link |
01:50:12.520
because you're saying P is not equal to NP
link |
01:50:16.960
because something bizarre has to happen.
link |
01:50:19.560
I mean, that's proof by the lack of bizarreness
link |
01:50:25.120
in our science.
link |
01:50:26.600
But it seems like just the very notion
link |
01:50:31.400
of P equals NP would be bizarre.
link |
01:50:33.040
So any way you arrive at, there's no way.
link |
01:50:36.240
You have to fight the dragon at some point.
link |
01:50:38.440
Yeah, okay.
link |
01:50:39.280
Well, anyway, for whatever it's worth,
link |
01:50:41.880
that's what we proved.
link |
01:50:43.320
Awesome.
link |
01:50:45.720
So that's a potential space of interesting problems.
link |
01:50:49.400
Yeah.
link |
01:50:50.240
Let me ask you about this other world
link |
01:50:54.120
that of machine learning, of deep learning.
link |
01:50:57.280
What's your thoughts on the history
link |
01:50:59.640
and the current progress of machine learning field
link |
01:51:02.600
that's often progressed sort of separately
link |
01:51:05.760
as a space of ideas and space of people
link |
01:51:08.840
than the theoretical computer science
link |
01:51:10.920
or just even computer science world?
link |
01:51:12.640
Yeah, it's really very different
link |
01:51:15.680
from the theoretical computer science world
link |
01:51:17.800
because the results about it,
link |
01:51:22.280
algorithmic performance tend to be empirical.
link |
01:51:25.400
It's more akin to the world of SAT solvers
link |
01:51:28.880
where we observe that for formulas arising in practice,
link |
01:51:33.880
the solver does well.
link |
01:51:35.920
So it's of that type.
link |
01:51:38.520
We're moving into the empirical evaluation of algorithms.
link |
01:51:45.280
Now, it's clear that there've been huge successes
link |
01:51:47.800
in image processing, robotics,
link |
01:51:52.720
natural language processing, a little less so,
link |
01:51:55.400
but across the spectrum of game playing is another one.
link |
01:52:00.400
There've been great successes and one of those effects
link |
01:52:07.320
is that it's not too hard to become a millionaire
link |
01:52:10.040
if you can get a reputation in machine learning
link |
01:52:12.360
and there'll be all kinds of companies
link |
01:52:13.960
that will be willing to offer you the moon
link |
01:52:16.360
because they think that if they have AI at their disposal,
link |
01:52:23.360
then they can solve all kinds of problems.
link |
01:52:25.560
But there are limitations.
link |
01:52:30.040
One is that the solutions that you get
link |
01:52:38.000
to supervise learning problems
link |
01:52:44.800
through convolutional neural networks
link |
01:52:50.000
seem to perform amazingly well
link |
01:52:55.120
even for inputs that are outside the training set.
link |
01:53:03.120
But we don't have any theoretical understanding
link |
01:53:06.240
of why that's true.
link |
01:53:09.360
Secondly, the solutions, the networks that you get
link |
01:53:14.560
are very hard to understand
link |
01:53:16.560
and so very little insight comes out.
link |
01:53:19.960
So yeah, yeah, they may seem to work on your training set
link |
01:53:23.960
and you may be able to discover whether your photos occur
link |
01:53:28.960
in a different sample of inputs or not,
link |
01:53:35.720
but we don't really know what's going on.
link |
01:53:37.520
We don't know the features that distinguish the photographs
link |
01:53:41.680
or the objects are not easy to characterize.
link |
01:53:49.560
Well, it's interesting because you mentioned
link |
01:53:51.160
coming up with a small circuit to solve
link |
01:53:54.280
a particular size problem.
link |
01:53:56.360
It seems that neural networks are kind of small circuits.
link |
01:53:59.880
In a way, yeah.
link |
01:54:01.360
But they're not programs.
link |
01:54:02.800
Sort of like the things you've designed
link |
01:54:04.960
are algorithms, programs, algorithms.
link |
01:54:08.920
Neural networks aren't able to develop algorithms
link |
01:54:12.600
to solve a problem.
link |
01:54:14.480
Well, they are algorithms.
link |
01:54:16.920
It's just that they're...
link |
01:54:18.520
But sort of, yeah, it could be a semantic question,
link |
01:54:25.280
but there's not a algorithmic style manipulation
link |
01:54:31.120
of the input.
link |
01:54:33.400
Perhaps you could argue there is.
link |
01:54:35.320
Yeah, well.
link |
01:54:37.120
It feels a lot more like a function of the input.
link |
01:54:40.520
Yeah, it's a function.
link |
01:54:41.720
It's a computable function.
link |
01:54:43.120
Once you have the network,
link |
01:54:46.040
you can simulate it on a given input
link |
01:54:49.360
and figure out the output.
link |
01:54:51.320
But if you're trying to recognize images,
link |
01:54:58.720
then you don't know what features of the image
link |
01:55:00.880
are really being determinant of what the circuit is doing.
link |
01:55:09.440
The circuit is sort of very intricate
link |
01:55:14.040
and it's not clear that the simple characteristics
link |
01:55:21.000
that you're looking for,
link |
01:55:22.040
the edges of the objects or whatever they may be,
link |
01:55:26.120
they're not emerging from the structure of the circuit.
link |
01:55:29.600
Well, it's not clear to us humans,
link |
01:55:31.120
but it's clear to the circuit.
link |
01:55:33.040
Yeah, well, right.
link |
01:55:34.880
I mean, it's not clear to sort of the elephant
link |
01:55:39.880
how the human brain works,
link |
01:55:44.600
but it's clear to us humans,
link |
01:55:46.880
we can explain to each other our reasoning
link |
01:55:49.160
and that's why the cognitive science
link |
01:55:50.760
and psychology field exists.
link |
01:55:52.720
Maybe the whole thing of being explainable to humans
link |
01:55:56.280
is a little bit overrated.
link |
01:55:57.720
Oh, maybe, yeah.
link |
01:55:59.760
I guess you can say the same thing about our brain
link |
01:56:02.480
that when we perform acts of cognition,
link |
01:56:06.160
we have no idea how we do it really.
link |
01:56:08.760
We do though, I mean, at least for the visual system,
link |
01:56:13.680
the auditory system and so on,
link |
01:56:15.200
we do get some understanding of the principles
link |
01:56:19.240
that they operate under,
link |
01:56:20.200
but for many deeper cognitive tasks, we don't have that.
link |
01:56:25.600
That's right.
link |
01:56:26.640
Let me ask, you've also been doing work on bioinformatics.
link |
01:56:33.000
Does it amaze you that the fundamental building blocks?
link |
01:56:36.960
So if we take a step back and look at us humans,
link |
01:56:39.840
the building blocks used by evolution
link |
01:56:41.800
to build us intelligent human beings
link |
01:56:44.640
is all contained there in our DNA.
link |
01:56:48.320
It's amazing and what's really amazing
link |
01:56:51.880
is that we are beginning to learn how to edit DNA,
link |
01:57:00.920
which is very, very, very fascinating.
link |
01:57:05.560
This ability to take a sequence,
link |
01:57:15.240
find it in the genome and do something to it.
link |
01:57:18.960
I mean, that's really taking our biological systems
link |
01:57:21.320
towards the world of algorithms.
link |
01:57:24.480
Yeah, but it raises a lot of questions.
link |
01:57:30.000
You have to distinguish between doing it on an individual
link |
01:57:33.920
or doing it on somebody's germline,
link |
01:57:35.760
which means that all of their descendants will be affected.
link |
01:57:40.280
So that's like an ethical.
link |
01:57:42.200
Yeah, so it raises very severe ethical questions.
link |
01:57:50.520
And even doing it on individuals,
link |
01:57:56.800
there's a lot of hubris involved
link |
01:57:59.480
that you can assume that knocking out a particular gene
link |
01:58:04.160
is gonna be beneficial
link |
01:58:05.400
because you don't know what the side effects
link |
01:58:07.000
are going to be.
link |
01:58:08.960
So we have this wonderful new world of gene editing,
link |
01:58:20.200
which is very, very impressive
link |
01:58:23.200
and it could be used in agriculture,
link |
01:58:27.280
it could be used in medicine in various ways.
link |
01:58:32.680
But very serious ethical problems arise.
link |
01:58:37.240
What are to you the most interesting places
link |
01:58:39.880
where algorithms, sort of the ethical side
link |
01:58:44.560
is an exceptionally challenging thing
link |
01:58:46.040
that I think we're going to have to tackle
link |
01:58:48.040
with all of genetic engineering.
link |
01:58:51.840
But on the algorithmic side,
link |
01:58:53.760
there's a lot of benefit that's possible.
link |
01:58:55.520
So is there areas where you see exciting possibilities
link |
01:59:00.280
for algorithms to help model, optimize,
link |
01:59:03.360
study biological systems?
link |
01:59:06.720
Yeah, I mean, we can certainly analyze genomic data
link |
01:59:12.480
to figure out which genes are operative in the cell
link |
01:59:17.440
and under what conditions
link |
01:59:18.800
and which proteins affect one another,
link |
01:59:21.280
which proteins physically interact.
link |
01:59:27.400
We can sequence proteins and modify them.
link |
01:59:32.680
Is there some aspect of that
link |
01:59:33.840
that's a computer science problem
link |
01:59:35.920
or is that still fundamentally a biology problem?
link |
01:59:39.840
Well, it's a big data,
link |
01:59:41.600
it's a statistical big data problem for sure.
link |
01:59:45.720
So the biological data sets are increasing,
link |
01:59:49.280
our ability to study our ancestry,
link |
01:59:55.680
to study the tendencies towards disease,
link |
01:59:59.960
to personalize treatment according to what's in our genomes
link |
02:00:06.960
and what tendencies for disease we have,
link |
02:00:10.440
to be able to predict what troubles might come upon us
link |
02:00:13.960
in the future and anticipate them,
link |
02:00:16.120
to understand whether you,
link |
02:00:24.360
for a woman, whether her proclivity for breast cancer
link |
02:00:31.560
is so strong enough that she would want
link |
02:00:33.680
to take action to avoid it.
link |
02:00:37.680
You dedicate your 1985 Turing Award lecture
link |
02:00:41.040
to the memory of your father.
link |
02:00:42.600
What's your fondest memory of your dad?
link |
02:00:53.040
Seeing him standing in front of a class at the blackboard,
link |
02:00:57.880
drawing perfect circles by hand
link |
02:01:03.960
and showing his ability to attract the interest
link |
02:01:08.960
of the motley collection of eighth grade students
link |
02:01:14.760
that he was teaching.
link |
02:01:19.120
When did you get a chance to see him
link |
02:01:21.640
draw the perfect circles?
link |
02:01:24.280
On rare occasions, I would get a chance
link |
02:01:27.480
to sneak into his classroom and observe him.
link |
02:01:33.160
And I think he was at his best in the classroom.
link |
02:01:36.320
I think he really came to life and had fun,
link |
02:01:42.720
not only teaching, but engaging in chit chat
link |
02:01:49.080
with the students and ingratiating himself
link |
02:01:52.280
with the students.
link |
02:01:53.800
And what I inherited from that is the great desire
link |
02:02:00.040
to be a teacher.
link |
02:02:01.920
I retired recently and a lot of my former students came,
link |
02:02:08.320
students with whom I had done research
link |
02:02:11.200
or who had read my papers or who had been in my classes.
link |
02:02:15.680
And when they talked about me,
link |
02:02:22.520
they talked not about my 1979 paper or 1992 paper,
link |
02:02:27.520
but about what came away in my classes.
link |
02:02:33.600
And not just the details, but just the approach
link |
02:02:36.400
and the manner of teaching.
link |
02:02:40.240
And so I sort of take pride in the,
link |
02:02:43.600
at least in my early years as a faculty member at Berkeley,
link |
02:02:47.680
I was exemplary in preparing my lectures
link |
02:02:51.760
and I always came in prepared to the teeth,
link |
02:02:56.760
and able therefore to deviate according
link |
02:02:59.320
to what happened in the class,
link |
02:03:01.200
and to really provide a model for the students.
link |
02:03:08.760
So is there advice you can give out for others
link |
02:03:14.640
on how to be a good teacher?
link |
02:03:16.520
So preparation is one thing you've mentioned,
link |
02:03:19.000
being exceptionally well prepared,
link |
02:03:20.440
but there are other things,
link |
02:03:21.520
pieces of advice that you can impart?
link |
02:03:24.480
Well, the top three would be preparation, preparation,
link |
02:03:27.400
and preparation.
link |
02:03:29.760
Why is preparation so important, I guess?
link |
02:03:32.840
It's because it gives you the ease
link |
02:03:34.440
to deal with any situation that comes up in the classroom.
link |
02:03:38.680
And if you discover that you're not getting through one way,
link |
02:03:44.520
you can do it another way.
link |
02:03:45.880
If the students have questions,
link |
02:03:47.320
you can handle the questions.
link |
02:03:49.000
Ultimately, you're also feeling the crowd,
link |
02:03:54.000
the students of what they're struggling with,
link |
02:03:57.080
what they're picking up,
link |
02:03:57.920
just looking at them through the questions,
link |
02:03:59.720
but even just through their eyes.
link |
02:04:01.440
Yeah, that's right.
link |
02:04:02.280
And because of the preparation, you can dance.
link |
02:04:05.400
You can dance, you can say it another way,
link |
02:04:09.800
or give it another angle.
link |
02:04:11.640
Are there, in particular, ideas and algorithms
link |
02:04:14.840
of computer science that you find
link |
02:04:17.080
were big aha moments for students,
link |
02:04:19.920
where they, for some reason, once they got it,
link |
02:04:22.760
it clicked for them and they fell in love
link |
02:04:24.720
with computer science?
link |
02:04:26.640
Or is it individual, is it different for everybody?
link |
02:04:29.320
It's different for everybody.
link |
02:04:30.840
You have to work differently with students.
link |
02:04:32.720
Some of them just don't need much influence.
link |
02:04:40.120
They're just running with what they're doing
link |
02:04:42.360
and they just need an ear now and then.
link |
02:04:44.800
Others need a little prodding.
link |
02:04:47.200
Others need to be persuaded to collaborate among themselves
link |
02:04:50.880
rather than working alone.
link |
02:04:53.000
They have their personal ups and downs,
link |
02:04:57.200
so you have to deal with each student as a human being
link |
02:05:03.000
and bring out the best.
link |
02:05:06.640
Humans are complicated.
link |
02:05:08.160
Yeah.
link |
02:05:09.240
Perhaps a silly question.
link |
02:05:11.240
If you could relive a moment in your life outside of family
link |
02:05:15.400
because it made you truly happy,
link |
02:05:17.440
or perhaps because it changed the direction of your life
link |
02:05:19.920
in a profound way, what moment would you pick?
link |
02:05:24.560
I was kind of a lazy student as an undergraduate,
link |
02:05:28.240
and even in my first year in graduate school.
link |
02:05:33.320
And I think it was when I started doing research,
link |
02:05:37.280
I had a couple of summer jobs where I was able to contribute
link |
02:05:41.520
and I had an idea.
link |
02:05:45.040
And then there was one particular course
link |
02:05:47.760
on mathematical methods and operations research
link |
02:05:51.520
where I just gobbled up the material
link |
02:05:53.600
and I scored 20 points higher than anybody else in the class
link |
02:05:57.560
then came to the attention of the faculty.
link |
02:06:00.680
And it made me realize that I had some ability
link |
02:06:04.600
that I was going somewhere.
link |
02:06:09.160
You realize you're pretty good at this thing.
link |
02:06:12.360
I don't think there's a better way to end it, Richard.
link |
02:06:14.320
It was a huge honor.
link |
02:06:15.240
Thank you for decades of incredible work.
link |
02:06:18.240
Thank you for talking to me.
link |
02:06:19.080
Thank you, it's been a great pleasure.
link |
02:06:21.080
You're a superb interviewer.
link |
02:06:23.920
I'll stop it.
link |
02:06:26.760
Thanks for listening to this conversation with Richard Karp.
link |
02:06:29.640
And thank you to our sponsors, 8sleep and Cash App.
link |
02:06:34.120
Please consider supporting this podcast
link |
02:06:35.880
by going to 8sleep.com slash Lex
link |
02:06:39.160
to check out their awesome mattress
link |
02:06:41.920
and downloading Cash App and using code LexPodcast.
link |
02:06:46.040
Click the links, buy the stuff,
link |
02:06:48.320
even just visiting the site
link |
02:06:49.800
but also considering the purchase.
link |
02:06:51.600
Helps them know that this podcast
link |
02:06:54.200
is worth supporting in the future.
link |
02:06:55.840
It really is the best way to support this journey I'm on.
link |
02:06:59.680
If you enjoy this thing, subscribe on YouTube,
link |
02:07:02.040
review it with Five Stars and Apple Podcast,
link |
02:07:04.120
support it on Patreon, connect with me on Twitter
link |
02:07:07.360
at Lex Friedman if you can figure out how to spell that.
link |
02:07:11.360
And now let me leave you with some words from Isaac Asimov.
link |
02:07:16.000
I do not fear computers.
link |
02:07:18.160
I fear lack of them.
link |
02:07:19.800
Thank you for listening and hope to see you next time.