back to indexDonald Knuth: Algorithms, Complexity, and The Art of Computer Programming | Lex Fridman Podcast #62
Chapters
0:0 Introduction
3:45 Donald Knuth Interview
6:30 Predicting the Future
14:26 literate programming
15:49 literary influences
22:1 Informal vs formal
23:4 How difficult is a design
25:42 Using data to construct algorithms
26:50 Accessibility of algorithms
33:1 Graph theory
36:49 Problems in combinatorics
39:16 Thinking and writing process
42:13 Some days harder than others
44:51 Macros
45:53 Writing
48:36 Art
50:26 Transformational surprises
58:3 Algorithms
00:00:00.000 |
The following is a conversation with Donald Knuth, 00:00:03.440 |
one of the greatest and most impactful computer scientists 00:00:18.680 |
the magnum opus, "The Art of Computer Programming." 00:00:23.320 |
He made several key contributions to the rigorous analysis 00:00:29.320 |
including the popularization of asymptotic notation 00:00:33.480 |
that we all affectionately know as the big O notation. 00:00:40.840 |
which most computer scientists, physicists, mathematicians, 00:00:47.000 |
use to write technical papers and make them look beautiful. 00:00:51.740 |
I can imagine no better guest to end 2019 with than Don, 00:00:56.780 |
one of the kindest, most brilliant people in our field. 00:01:03.120 |
It's one I avoided because perhaps counterintuitively, 00:01:16.240 |
The office space was a big cramp for filming, 00:01:19.400 |
but it was a magical space where Don does most of his work. 00:01:24.120 |
It meant a lot to me that he would welcome me into his home. 00:01:42.740 |
and to be part of an amazing community of curious minds. 00:01:50.620 |
and I look forward to many more of those in 2020. 00:02:10.640 |
I recently started doing ads at the end of the introduction. 00:02:13.640 |
I'll do one or two minutes after introducing the episode 00:02:23.700 |
I provide timestamps for the start of the conversation 00:02:30.980 |
by trying out the product or service being advertised. 00:02:39.100 |
I personally use Cash App to send money to friends, 00:02:49.740 |
You can buy fractions of a stock, say $1 worth, 00:02:54.960 |
Broker services are provided by Cash App Investing, 00:03:03.460 |
to support one of my favorite organizations called FIRST, 00:03:06.860 |
best known for their FIRST Robotics and Lego competitions. 00:03:10.480 |
They educate and inspire hundreds of thousands of students 00:03:16.000 |
and have a perfect rating on Charity Navigator, 00:03:23.240 |
When you get Cash App from the App Store or Google Play 00:03:34.800 |
that I've personally seen inspire girls and boys 00:03:40.580 |
And now here's my conversation with Donald Knuth. 00:03:50.480 |
to spend several evenings with a IBM 650 computer, 00:04:05.040 |
What was it that grabbed you about that computer? 00:04:20.360 |
But when I first saw it, it was through a window 00:04:23.040 |
and there were just a lot of lights flashing on it. 00:04:48.120 |
Okay, so, well, but I had a key to the building 00:04:55.840 |
And my first experience was based on the fact 00:05:16.840 |
and a word of memory was 10 decimal digits plus a sign. 00:05:20.360 |
And it would do, to add two numbers together, 00:05:40.200 |
And you had to wait, I don't know, five cycle times. 00:05:57.840 |
and you go three cycles and you can get the data 00:06:05.600 |
Otherwise, you spin until you get to the right place. 00:06:09.360 |
And we had no random access memory whatsoever 00:06:14.440 |
Senior year, we got 50 words of random access memory, 00:06:18.840 |
And we would move stuff up to the random access memory 00:06:23.840 |
in 60 word chunks and then we would start again. 00:06:54.720 |
and then she said, okay, so what didn't surprise? 00:06:57.360 |
And I tried for five minutes to think of something 00:07:16.560 |
that there were more than a thousand of ever. 00:07:28.160 |
- It was the first one, yeah, done in quantity. 00:07:50.680 |
- So you refer to people, including yourself, 00:07:55.760 |
who gravitate toward a kind of computational thinking 00:07:59.160 |
as geeks, at least I've heard you use that terminology. 00:08:08.200 |
that made my brain structure in a certain way 00:08:16.000 |
2% of the population, you empirically estimate. 00:08:28.200 |
because kids have different experiences when they're young. 00:08:30.800 |
- So what does the world look like to a geek? 00:08:35.480 |
What is this aspect of thinking that is unique to-- 00:08:49.320 |
In the '50s, IBM noticed that there were geeks 00:08:57.600 |
and non-geeks, and so they tried to hire geeks 00:09:17.640 |
One is this ability to jump levels of abstraction. 00:09:35.840 |
So you know that in order to solve some big problem, 00:09:40.440 |
what you need to do is add one to a certain register 00:09:47.280 |
And below the, I don't go down to the electron level, 00:10:25.240 |
at lots of levels and fluently go between them 00:10:32.920 |
in the people that resonate with computers like I do. 00:10:37.400 |
So in my books, I also don't stick just to the high level, 00:10:54.320 |
that I should write better books and it's probably true, 00:11:11.480 |
The other thing is that it's more of a talent 00:11:21.800 |
where there's case one, case two, case three, 00:11:24.220 |
instead of having one or two rules that govern everything. 00:11:38.520 |
each step does something else, that doesn't bother me. 00:11:41.120 |
But a lot of pure mathematics is based on one or two rules, 00:11:59.760 |
- And you mentioned that while Jacobi, Boole, Abel, 00:12:11.640 |
the first 100% legit geek was Turing, Alan Turing. 00:12:16.000 |
- I think he had, yeah, a lot more of this quality 00:12:21.000 |
than any, just from reading the kind of stuff he did. 00:12:26.480 |
- So how does Turing, what influence has Turing had on you? 00:12:43.840 |
that talked about computability theory and Turing machines. 00:12:47.600 |
And it was all, it sounded like a very specific 00:12:52.080 |
kind of purely theoretical approach to stuff. 00:13:07.440 |
he wrote a wonderful manual for Manchester machines 00:13:17.360 |
and he was a real hacker that he had his hands dirty. 00:13:32.960 |
I could, you know, I could feel this kinship. 00:13:44.040 |
I mean, left to right instead of right to left 00:13:54.160 |
- He would write pi as, you know, nine, five, 00:14:24.920 |
You've practiced some of the most elegant formalism 00:14:29.960 |
in computer science and yet you're the creator 00:14:37.000 |
which seems to move closer to natural language 00:14:57.600 |
and I don't think all truth lies in one kind of expertise. 00:15:07.560 |
is a convex combination of English and mathematics. 00:15:17.200 |
- I wish, you know, I want my kids to be that way. 00:15:20.880 |
Use left brain, right brain at the same time, 00:15:32.600 |
for pleasure until into your 30s, you know, literature. 00:15:39.240 |
but I'll try to be consistent with what you read. 00:15:54.880 |
I don't know if, it was mentioned as something, 00:16:13.440 |
- Well, we both got doctors from Harvard on the same day, 00:16:42.600 |
not because of particularly of the plot of the story, 00:17:03.480 |
and so that I thought was especially beautiful. 00:17:08.480 |
On the other hand, Dostoevsky, I didn't like at all, 00:17:16.200 |
because he kept forgetting what he had started out to do, 00:17:20.160 |
I didn't think that he polished his stuff at all, 00:17:32.640 |
- So the music of the prose is what you admire more than-- 00:17:36.800 |
- I certainly do admire the music of the language, 00:17:39.440 |
which I couldn't appreciate in the Russian original, 00:17:42.360 |
but I can in Victor Hugo, because it's close, 00:17:46.840 |
but Tolstoy I like, the same reason I like Herman Wouk 00:17:57.600 |
Marjorie Morningstar has a similar character in Hugo 00:18:34.400 |
- But Schiller, you know, I'm trying to get across 00:18:40.520 |
and part of it is, as you say, the music of the language, 00:18:51.320 |
versus Dashiell Hammett, Dashiell Hammett's sentences 00:18:53.920 |
are awful, and Raymond Chandler's are beautiful, 00:19:16.200 |
you mentioned you were dressed like James Bond, 00:19:21.640 |
he had a really great gift for, if he has a golf game, 00:19:32.400 |
or the absolute best possible hands of bridge that exist, 00:19:37.400 |
and he exploits it, and tells it beautifully, so. 00:20:04.180 |
what do you think about natural language in general, 00:20:29.900 |
if we're trying to understand a complicated thing, 00:20:34.320 |
and so, this is in fact the key to technical writing, 00:20:44.920 |
formally and informally, or maybe three times, 00:20:57.760 |
- Is that better for the writer, or the reader, or both? 00:21:01.720 |
- Well, the writer just tries to understand the reader, 00:21:08.120 |
is to have a good mental image of the reader, 00:21:15.040 |
and to impress the reader with what has impressed the writer, 00:21:26.100 |
we try to, instead of looking at it as something 00:21:29.400 |
that we're just trying to give an instruction 00:21:40.840 |
or to the programmer himself when he's debugging it, 00:21:55.400 |
if your program is gonna be not just a one-shot deal. 00:22:04.680 |
Do you see hope for the combination of informal and formal, 00:22:12.840 |
- Yeah, I'm the wrong person to ask, I guess, 00:22:15.960 |
because I'm a geek, but I think for a geek it's easy. 00:22:49.400 |
and so I put it together in the literary program. 00:23:10.440 |
my question was how difficult is it to design a system 00:23:14.760 |
where much of the programming is done informally? 00:23:22.120 |
- I think whatever works to make it understandable is good, 00:23:27.120 |
but then you have to also understand how informal it is. 00:23:36.560 |
So, by putting the formal and informal together, 00:23:40.080 |
this is where it gets locked into your brain. 00:23:49.960 |
well, I'm working on a problem right now, so. 00:24:00.000 |
- Well, it's a little too complicated an example. 00:24:16.760 |
and at the end, you're supposed to fill in each box 00:24:19.680 |
with the number of distinct numbers that it points to. 00:24:24.680 |
So, if I put a three in a box, that means that, 00:24:30.020 |
that means that there's gonna be three different numbers 00:24:40.640 |
but anyway, I'm supposed to find a set of numbers 00:24:48.800 |
that each number counts how many distinct numbers 00:24:53.120 |
And so, a guy sent me his solution to this problem 00:25:03.800 |
that say either this is true, or this is true, 00:25:17.380 |
and the guys I'm pointing to contain the numbers 00:25:30.640 |
that helps me understand the logical statement 00:25:35.580 |
that he's written down as a string of numbers 00:25:37.660 |
in terms of some abstract variables that he had. 00:25:45.340 |
there has been a resurgence in computer science 00:25:56.580 |
So, it's another way to construct algorithms, really. 00:26:01.460 |
So, as opposed to natural language to construct algorithms, 00:26:08.260 |
So, what's your view of this branch of computer science 00:26:18.700 |
- It seems to be suited to a certain kind of non-geek, 00:26:29.100 |
It has its own community that really resonates with that. 00:26:38.740 |
because nobody, even the people who work with it, 00:26:54.620 |
to a different community, a different type of brain. 00:27:04.340 |
perhaps could make programming more accessible 00:27:10.620 |
- There are people who think it's just a matter of education 00:27:13.700 |
and anybody can learn to be a great programmer, 00:27:20.760 |
I wish that were true, but I know that there's a lot 00:27:32.220 |
to build myself up, and I never got past a certain level. 00:27:50.700 |
but other people are good at four dimensions. 00:27:56.700 |
- So let's go to the art of computer programming. 00:28:13.860 |
- It was supposed to be a single book with 12 chapters. 00:28:21.700 |
you're in the middle of volume four of seven. 00:28:25.300 |
- In the middle of volume 4B, more precisely. 00:28:46.340 |
if you were to give a summary, a quick elevator summary. 00:28:52.540 |
- But depending how many floors there are in the building. 00:28:54.660 |
- Yeah, the first volume called Fundamental Algorithms 00:29:04.040 |
You have to know the basic concepts of what is a program 00:29:15.940 |
so you can have some kind of an idea what's going on. 00:29:19.980 |
And it has basic concepts of input/output and subroutines. 00:29:27.860 |
- Induction, right, mathematical preliminary. 00:29:44.500 |
not only does it work, but it works this fast. 00:29:49.600 |
And then there's the standard way to structure data inside 00:29:57.580 |
Volume two talks, it's called Semi-Numerical Algorithms. 00:30:41.700 |
- Floating point arithmetic, high precision arithmetic, 00:30:44.940 |
not only addition, subtraction, multiplication, 00:30:57.140 |
- Right, so here we're not dealing necessarily with numbers 00:31:05.340 |
with Google nowadays, but I mean, we have to find stuff. 00:31:15.860 |
none of these volumes is about a particular application, 00:31:23.620 |
why people want to know about random numbers. 00:31:26.660 |
So then volume four goes into combinatorial algorithm. 00:31:31.020 |
This is where we have zillions of things to deal with. 00:31:39.180 |
where one good idea can make something go more 00:31:49.420 |
that are probably never gonna be solved efficiently, 00:32:10.580 |
- It's true it's fun, but combinatorial algorithms 00:32:28.380 |
and an interesting subtle algorithm that not so obvious, 00:32:37.380 |
that's where computer science really comes in. 00:33:01.380 |
- Now do you like the most in the domain of graphs 00:33:04.980 |
- Graphs are great because they're terrific models 00:33:10.620 |
And you throw numbers on a graph, you got a network. 00:33:19.500 |
But combinatorial in general is any arrangement of objects 00:33:33.260 |
And so is it possible to put something together 00:33:41.820 |
is there a way to put these numbers on a bunch of boxes 00:33:58.700 |
when I started writing down a table of contents, 00:34:03.420 |
it wasn't gonna be a book about computer programming 00:34:16.820 |
And at that time, there were only a few dozen people 00:34:30.460 |
for like the campus newspaper and things like that. 00:34:38.660 |
I'm the only person I know who's written a compiler 00:34:45.380 |
And all the other people I knew had super ideas 00:34:49.740 |
but I couldn't see that they would be able to write a book 00:34:52.340 |
that would describe anybody else's ideas with their own. 00:34:55.780 |
So I could be the journalist and I could explain 00:34:59.780 |
what all these cool ideas about compiler writing were. 00:35:07.740 |
let me, you need to have a chapter about data structures. 00:35:13.860 |
I want to talk about searching 'cause a compiler writer 00:35:16.860 |
has to look up the variables in a symbol table 00:35:21.860 |
and find out which, when you write the name of a variable 00:35:35.740 |
and I kind of know some arithmetic and stuff. 00:35:44.540 |
because that was what I really enjoyed programming the most 00:35:58.180 |
And chapter 12 was going to be actual compilers, 00:36:06.580 |
Well, okay, so that was my table of contents from 1962. 00:36:10.640 |
And during the '70s, the whole field of combinatorics 00:36:28.180 |
your problem has gotten more than 10 times harder. 00:36:35.340 |
about combinatorics in the '70s to the point that, 00:36:49.540 |
- What kind of problems were occupying people's minds? 00:37:19.420 |
and they were usually associated with matroid theory, 00:37:43.140 |
We can test for satisfiability in linear time, 00:37:45.180 |
but if you allow yourself three variables in the clause, 00:37:52.540 |
So these articles were about trying to find better ways 00:37:56.860 |
to solve cryptography problems and graph theory problems. 00:38:04.320 |
but we didn't know how to find the best subsets of the data, 00:38:12.940 |
- So how did it continue to change from the '70s to today? 00:38:16.940 |
- Yeah, so now there may be half a dozen conferences 00:38:20.700 |
whose topic is combinatorics, different kind, 00:38:24.940 |
but fortunately, I don't have to rewrite my book every month 00:38:31.100 |
But still, there's a huge amount of work being done 00:38:34.020 |
and people getting better ideas on these problems 00:38:37.700 |
that don't seem to have really efficient solutions, 00:39:06.020 |
and I try out lots of things and keep rewriting 00:39:18.740 |
What's your thinking and writing process like every day? 00:39:25.620 |
- Yeah, I guess it's actually the best question 00:39:36.980 |
- Yeah, but okay, so the chair I'm sitting in 00:39:50.660 |
where I have other books, some reference books, 00:40:05.640 |
But then I have the standup desk right next to us 00:40:09.340 |
and so after I write something with pencil and eraser, 00:40:13.920 |
I get up and I type it and revise and rewrite. 00:40:18.100 |
- The kernel of the idea is first put on paper. 00:40:33.220 |
And these are, before I describe something in my book, 00:40:40.320 |
So for example, I learned at the end of January, 00:40:45.260 |
I learned of a breakthrough by four Japanese people 00:40:50.160 |
who had extended one of my methods in a new direction 00:40:54.540 |
and so I spent the next five days writing a program 00:41:00.300 |
they had only generalized part of what I had done 00:41:04.760 |
so then I had to see if I could generalize more parts of it 00:41:14.060 |
of the other problems I had already worked out 00:41:34.940 |
and so I wrote to my friends who might be good 00:41:37.740 |
at solving those problems and they solved some of them. 00:41:45.140 |
And so a month later, I had absorbed one new idea 00:41:50.380 |
that I learned and I'm glad I heard about it in time 00:41:59.000 |
On the other hand, this book was supposed to come in 00:42:10.780 |
- Well, so in that process, in that one month process, 00:42:34.280 |
Why couldn't I just be sloppy and not try this out 00:42:40.240 |
But I know that people are counting me to do this 00:42:45.520 |
and so, okay, so okay, Don, I'll grit my teeth and do it. 00:42:50.080 |
And then the joy comes out when I see that actually, 00:43:00.160 |
has actually read and understood what I wrote 00:43:05.680 |
I did wanna mention something about the method. 00:43:31.840 |
explain how to draw such skewed pixel diagrams. 00:43:42.120 |
and they make tablets of paper with this nice large size 00:44:01.940 |
And those are when I'm getting my ideas on paper, okay? 00:44:10.680 |
In fact, I went to typing school when I was in high school 00:44:17.580 |
So then when I do the editing, stand up and type, 00:44:21.040 |
then I revise this and it comes out a lot different 00:44:24.800 |
than what, for style and rhythm and things like that 00:44:39.080 |
- To a certain extent, I have only a small number 00:44:46.600 |
displayed equation, I do something and so on. 00:44:56.080 |
- So for example, Turing wrote, what, "The Other Direction." 00:44:59.360 |
You don't write macros, you don't think in macros. 00:45:12.840 |
I mean, I'll change something if I can save a line. 00:45:19.800 |
I'll figure out a way to rewrite the sentence 00:45:27.360 |
but I can't resist because I know it's only another 00:45:55.640 |
you know, basically suffering, the writing processes. 00:45:59.600 |
- Having, you know, it's extremely difficult. 00:46:05.160 |
or technical writing that you're doing can be like that. 00:46:13.440 |
how do you every day sit down to do the work? 00:46:22.740 |
But it'd be interesting to hear if there are non-fun parts 00:46:31.120 |
- Yeah, so the fun comes when I'm able to put together 00:46:35.640 |
ideas of two people who didn't know about each other. 00:46:44.240 |
And so then, you know, then I get to make the synthesis 00:47:02.680 |
you know, I try to give credit to all the authors. 00:47:06.720 |
And so I write to people who know the people, 00:47:11.720 |
authors if they're dead or I communicate this way. 00:47:22.800 |
And I rewrite the programs after I get a better idea. 00:47:28.920 |
- Dead ends, oh yeah, I throw stuff out, yeah. 00:47:32.040 |
One of the things that I, I spent a lot of time 00:47:35.280 |
preparing a major example based on the game of baseball. 00:47:42.500 |
for whom baseball is the most important thing in the world. 00:47:48.720 |
for whom cricket is the most important in the world 00:47:58.040 |
I mean, it was gonna have a fold out illustration 00:48:00.800 |
And I was saying, well, what am I really teaching 00:48:02.640 |
about algorithms here where I had this baseball example? 00:48:10.440 |
wouldn't they, what would they think about this? 00:48:14.920 |
But I, you know, I had something that would have 00:48:18.400 |
really appealed to people who grew up with baseball 00:48:46.440 |
- Yeah, well, that's what I wrote my Turing lecture about. 00:49:18.160 |
often of fine art, which adds this beauty to the mix 00:49:21.840 |
and says, you know, we have things that are artistically 00:49:44.280 |
- But anyway, it's that part that says that it's done well, 00:50:06.500 |
- But there's an element of fine art and beauty. 00:50:14.620 |
that you can write a program and make a work of art. 00:50:42.100 |
that changed the way you see a space of problems? 00:50:51.780 |
But that isn't really what you're looking for. 00:51:33.400 |
I mean, logic underlies everything we can describe, 00:51:40.560 |
all of what we know in terms of logic somehow. 00:52:12.680 |
to the book that I never would have thought of 00:52:25.520 |
And it was the standard way to design computers 00:52:32.920 |
in the year 2000, so that's another great big surprise. 00:52:36.920 |
So a lot of these things have totally changed 00:52:42.400 |
And the middle third of volume 4B is about SAT solvers, 00:52:47.000 |
and that's 300 plus pages, which is all about material, 00:52:52.000 |
mostly about material that was discovered in this century. 00:53:04.080 |
and write 15 different SAT solvers that I wrote 00:53:08.520 |
while preparing that, seven of them are described 00:53:11.480 |
in the book, others were from my own experience. 00:53:23.480 |
- Yeah, and the interesting thing about the BDDs 00:53:26.960 |
was that the theoreticians started looking at it 00:53:53.080 |
why machine learning doesn't solve everything. 00:53:56.360 |
But I'm not only worried about the worst case, 00:53:59.680 |
I get a huge delight when I can actually solve 00:54:10.600 |
I know that I'm way better than I was before. 00:54:31.040 |
- So in general, what brings you more pleasure? 00:54:36.000 |
Improving or showing a worst case analysis of an algorithm, 00:54:52.560 |
only a million times faster than I was able to do before. 00:55:05.640 |
- So that said, you popularized the asymptotic notation 00:55:18.440 |
Do you see any aspects of that kind of analysis 00:55:26.080 |
- Well, the main purpose, we should have notations 00:55:29.480 |
that help us for the problems we wanna solve, 00:55:38.920 |
had used asymptotic notation in a certain way, 00:55:43.120 |
but it was only known to a small group of people. 00:55:46.360 |
And I realized that, in fact, it was very useful 00:56:05.400 |
where I'd say zero or one, or zero, one, or two. 00:56:10.320 |
And suppose that when I had been in high school, 00:56:13.880 |
we would be allowed to put in the middle of our formula, 00:56:27.080 |
two such expressions together, and deal with them. 00:56:35.360 |
here's something that's, I'm not sure what it is, 00:56:40.360 |
I know it's not bigger than some constant times 00:56:50.120 |
to big O of N cubed, and I know how to add big O 00:57:06.320 |
as I'm trying to figure out how good an algorithm is. 00:57:09.480 |
- So have there been algorithms in your journey 00:57:18.800 |
- Well, the worst case of a combinatorial algorithm 00:57:28.080 |
where one of the last exercises in that part of my book 00:57:33.040 |
was figure out a problem that has 100 variables 00:58:10.020 |
you know, if somebody does prove that P equals NP, 00:58:14.080 |
it will not directly lead to an actual algorithm 00:58:25.240 |
between easy and difficult problems of P and NP and so on? 00:58:32.260 |
if an algorithm exists, then somebody will find it. 00:58:48.480 |
than anybody can understand, or ever make use of. 00:58:53.240 |
- Because they're just way beyond human comprehension. 00:58:56.920 |
The total number of algorithms is more than mind-boggling. 00:59:10.080 |
we don't have the foggiest idea what the algorithms are. 00:59:12.920 |
There are simple examples based on game playing, 00:59:27.960 |
for the first player to win in the game of hex, 00:59:42.200 |
and the white player tries to get a white path 00:59:45.160 |
from left to right, and the black player tries 00:59:56.200 |
But there's no draws, because after all the white 00:59:58.840 |
and black are played, there's either gonna be 01:00:05.760 |
So there's always, you know, it's the perfect 01:00:24.400 |
And so it's gotta be either a first player win 01:00:27.600 |
Mathematically, you follow out all the trees, 01:00:30.800 |
and there's always a win for the first player, 01:00:43.840 |
because the second player could mimic the first player 01:00:48.680 |
And so you can show that it has to be one or the other. 01:00:59.360 |
In other words, there are cases where you can prove 01:01:02.680 |
the existence of a solution, but nobody knows 01:01:10.880 |
there's a very powerful theorem in graph theory 01:01:15.400 |
by Robinson and Seymour that says that every class 01:01:31.520 |
Now a class of graphs, for example, planar graphs, 01:01:33.720 |
these are graphs that you can draw in a plane 01:01:56.640 |
Okay, now, but there are millions of different 01:02:09.600 |
that still remains the same under taking minor. 01:02:16.960 |
any such family of graphs, there's a finite number 01:02:29.600 |
then it has to contain, then there has to be a way 01:02:54.440 |
And so there are two bad graphs that are not planar. 01:02:58.320 |
And every non-planar graph contains one of these 01:03:01.480 |
two bad graphs by shrinking and removing edges. 01:03:17.440 |
- And they proved in this sequence of 20 papers, 01:03:28.120 |
- Any arbitrary class that's closed under taking minors. 01:03:31.000 |
- That's closed under, maybe I'm not understanding, 01:03:36.760 |
- Almost all the important classes of graphs are. 01:03:42.120 |
but also hundreds of them that arise in applications. 01:03:47.120 |
I have a book over here called "Fact Classes of Graphs," 01:03:51.520 |
and it's amazing how many different classes of graphs 01:03:58.960 |
- So why do you bring up this theorem, or this proof? 01:04:05.560 |
that are known for special classes of graphs. 01:04:18.800 |
So you'd like to test, somebody gives you a graph, 01:04:28.400 |
and find an algorithm that's gonna solve my problem 01:04:48.720 |
And so all I have to do is test whether or not, 01:05:01.560 |
And given any minor, there's a polynomial time algorithm 01:05:04.720 |
saying I can tell whether this is a minor of you. 01:05:24.680 |
However, all we know is that the number of minors is finite. 01:05:28.600 |
We don't know what, we might only know one or two 01:05:32.120 |
of those minors, but we don't know if we've got 20 of them, 01:05:46.400 |
- That's a really great example of what you worry about 01:05:49.840 |
or why you think P equals NP won't be useful. 01:05:59.920 |
- Because you have to rule out so many possible algorithms 01:06:08.260 |
You can take the graph and you can represent it 01:06:24.380 |
and construct some certain constant in polynomial time. 01:06:46.140 |
that some fairly random looking number actually is useful 01:06:56.380 |
just because there's so many hairs on your head. 01:07:10.860 |
are gonna have the same number of hairs on their head. 01:07:17.540 |
how many people there are and how many hairs on their head. 01:07:20.660 |
There must be people walking around in the country 01:07:22.580 |
that have the same number of hairs on their head. 01:07:31.940 |
just happens to prove that a graph has a Hamiltonian path. 01:07:35.940 |
I mean, I see lots of cases where unexpected things happen 01:07:44.220 |
- So because the space of possibility is so huge, 01:08:05.460 |
have been racking their brains for years and years 01:08:11.380 |
None of them, nobody has thought of the algorithm. 01:08:19.260 |
On the other hand, I can use exactly the same logic 01:08:25.900 |
because there's so many smart people out here 01:08:40.580 |
and we haven't found them yet, therefore they don't exist. 01:08:43.900 |
But you can show that there's so many planets out there 01:08:50.300 |
And then there's also the possibility that they exist 01:08:54.420 |
but they all discovered machine learning or something 01:09:00.940 |
- Well, on that small, quick tangent, let me ask, 01:09:11.420 |
- I don't spend my time thinking about things 01:09:27.660 |
But I don't take time to answer unsolvable questions. 01:09:35.020 |
Well, 'cause you've taken on some tough questions 01:09:42.620 |
that may seem unsolvable, but they're in the space. 01:09:44.860 |
- It gives me a thrill when I can get further 01:09:53.140 |
- I'm glad that there's no proof that God exists or not. 01:10:14.200 |
artificial intelligence community has developed 01:10:18.000 |
and in parallel with computer science since the '60s. 01:10:21.320 |
What's your view of the AI community from the '60s to now? 01:10:29.400 |
who were inspired by trying to mimic intelligence 01:10:42.500 |
who have pushed the envelope of computer science 01:10:50.320 |
So all the way through, it's been a great source 01:11:06.580 |
and then more and more successful answers over the years. 01:11:13.860 |
for lots of the great discoveries of computer science. 01:11:16.420 |
- Are you yourself captivated by the possibility 01:11:24.760 |
- Not as much as most of the people in the field, 01:11:30.420 |
but that's not to say that they're wrong or that, 01:11:34.700 |
it's just you asked about my own personal preferences. 01:12:01.860 |
and being able to pretend to understand something 01:12:05.420 |
and give the illusion of understanding something. 01:12:27.620 |
but I don't see anything coming any closer to really 01:12:32.620 |
the kind of stuff that I would consider intelligence. 01:12:40.980 |
on that line of thinking, which I very much agree with, 01:12:45.460 |
so the art of computer programming, as the book, 01:12:57.620 |
- That's only because I set the table of contents in 1962, 01:13:04.580 |
- I'm glad I didn't wait until 1965 or something. 01:13:08.060 |
- That's, one book, maybe we'll touch on the Bible, 01:13:12.620 |
but one book can't always cover the entirety of everything. 01:13:22.260 |
for the art of computer programming is what it is. 01:13:26.020 |
But you did mention that you thought that understanding 01:13:33.200 |
incredibly organized tasks might well be the key 01:13:42.060 |
So what do you think is the difference between the way 01:13:52.860 |
- Sorting a list isn't the same as cognition, though, 01:14:04.580 |
We know which ant has talked to which other ant, 01:14:23.980 |
think of an ant colony as a cognitive single being, 01:14:29.820 |
rather than as a colony of lots of different ants. 01:14:32.340 |
I mean, just like the cells of our brain are, 01:14:36.020 |
and the microbiome and all that is interacting entities, 01:14:41.020 |
but somehow I consider myself to be a single person. 01:15:06.900 |
But if we're going to crack the secret of cognition, 01:15:31.860 |
what are your thoughts of maybe Conway's Game of Life? 01:15:48.020 |
I mean, that's not its most powerful thing, I would say. 01:16:03.820 |
- Yes, we understand exactly what the primitives are. 01:16:06.900 |
- The primitives, just like with the ant colony, 01:16:09.620 |
- But still, it doesn't say that I understand life. 01:16:17.620 |
It gives me a better insight into what does it mean 01:16:27.960 |
What does it mean to have free choice, for example? 01:16:37.940 |
- Yes, I don't see any reason why God should be forbidden 01:16:44.180 |
to, I mean, we know that dice are extremely important 01:16:57.060 |
without randomness, and so I don't see any reason 01:17:05.500 |
you don't see why the physics should constrain it. 01:17:11.460 |
- So in 2001, you gave a series of lectures at MIT 01:17:22.820 |
- So in 1999, you spent a little bit of time in Boston, 01:17:37.420 |
I recommend people, it's transcription of your lectures. 01:17:40.840 |
So what did you learn about how ideas get started 01:17:44.460 |
and grow from studying the history of the Bible? 01:17:46.940 |
So you've rigorously studied a very particular part 01:18:26.240 |
But you say, but maybe it might be good for me 01:19:29.860 |
And I had about, let's say 60 verses out of 3000. 01:19:34.940 |
I think it's one out of 500 or something like this. 01:19:40.980 |
I spent, for example, at Boston Public Library, 01:19:58.540 |
to look at this book that weren't in the Boston Public, 01:20:20.540 |
but about the secondary literature about the Bible, 01:20:23.500 |
the things that scholars have written about it. 01:20:50.860 |
- In this random approach of sampling the Bible, 01:21:02.780 |
one of the biggest accumulation of ideas in our-- 01:21:28.420 |
and as I say, I'm glad that there's no way to prove this 01:21:38.620 |
And I would never speculate about spiritual things 01:21:48.420 |
And I think my life would be very incomplete. 01:21:55.980 |
but a lot of the people say God doesn't exist, 01:22:19.180 |
it's much better to be an atheist than not to care at all. 01:22:32.220 |
that I'd love it if you could partake in yourself, 01:22:38.860 |
And so how would you, if you were God, Doc Knuth, 01:22:42.260 |
how would you present yourself to the people of Earth? 01:22:47.660 |
and there was this book that really I can recommend to you. 01:23:20.900 |
but it's really very much about this question 01:23:31.420 |
that my previous means of communication with the world 01:23:59.260 |
- I think it mostly, you wanna learn humility. 01:24:01.860 |
You wanna realize that once we solve one problem, 01:24:28.660 |
If you were to run program analysis on your own life, 01:24:55.260 |
and learning how to be a automaton that was obedient. 01:25:06.340 |
And I had the great advantage that I didn't have anybody 01:25:24.460 |
and that it was my fault that I wasn't studying hard enough 01:25:32.860 |
And I don't know how to avoid the existence of biases 01:25:37.860 |
in the world, but I know that that's an extra burden 01:26:27.580 |
There was a TV show once called "Eight is Enough," 01:26:39.300 |
which means if I can have a way of rating happiness, 01:27:09.340 |
- Do you think you've achieved that point eight 01:27:43.700 |
telling me that I'm supposed to be mad at somebody. 01:27:55.180 |
that doesn't mean that I should find somebody 01:28:14.420 |
So that's kind of the numerical analysis I do. 01:28:29.940 |
in 2006 you were diagnosed with prostate cancer. 01:28:34.580 |
Has that encounter with mortality changed you in some way, 01:28:41.740 |
The first encounter with mortality was when my dad died, 01:28:45.500 |
and I went through a month when I sort of came to 01:28:50.500 |
be comfortable with the fact that I was gonna die someday. 01:29:14.000 |
I sort of remember after three or four weeks, 01:29:18.800 |
the first time I started having a technical thought 01:29:21.720 |
that made sense and was maybe slightly creative, 01:29:36.680 |
I learned that this is sort of a standard grief process 01:29:51.400 |
except for finishing the art of computer programming. 01:30:01.840 |
I'd wanted all my life to write a piece of music, 01:30:06.840 |
and I had an idea for a certain kind of music 01:30:24.080 |
I wanted to know if it was gonna work or not. 01:30:38.040 |
and there's talk of concerts in Europe and various things. 01:30:59.960 |
with the art of computer programming until I go to Sina. 01:31:02.960 |
- Do you think there's a element of 0.8 that might apply? 01:31:08.440 |
- Well, I look at it more that I got actually to 1.0 01:31:26.440 |
So when I was diagnosed with prostate cancer, 01:31:32.920 |
you know, I've had all kinds of good luck all my life 01:31:37.920 |
and there's no, I have nothing to complain about. 01:31:40.880 |
So I might die now, and we'll see what happens. 01:32:03.320 |
and spent some time learning how to walk again 01:32:15.760 |
But I got home and I realized I hadn't really thought 01:32:21.240 |
I hadn't any expectation, you know, I said, okay, 01:32:28.680 |
But I didn't come to with the attitude that, you know, 01:32:36.040 |
And I just said, okay, I was accepting whatever turned out. 01:32:44.600 |
You know, I'd gotten more than my share already. 01:33:04.840 |
I had sort of thought of it as if, as this might, 01:33:08.000 |
I was comfortable with the fact that it was at the end. 01:33:14.440 |
But I was hoping that I would still, you know, 01:33:28.880 |
I didn't start seriously on the music project until 2012. 01:33:38.160 |
In the '70s, you've created the tech typesetting system 01:33:43.280 |
together with metafont language for font description 01:33:52.200 |
and the aesthetic of the countless research fields, 01:33:57.200 |
right, math, physics, beyond computer science, so on. 01:34:04.120 |
I think I speak for a lot of people in saying that. 01:34:11.680 |
There's a beauty to typography that you've created, 01:34:46.560 |
have pictures of vases, and underneath would be a number, 01:34:58.240 |
And so he could, you know, so I thought maybe I would, 01:35:08.560 |
and, you know, so that I would write something 01:35:14.440 |
Well, it wasn't quite rigorous enough for a computer to do. 01:35:19.160 |
But anyway, people have tried to put numerical value 01:35:22.920 |
on beauty, but, and he did probably the most serious attempt. 01:35:27.920 |
And George Gershwin's teacher also wrote two volumes 01:35:34.560 |
where he talked about his method of composing music, 01:35:38.440 |
but you're talking about another kind of beauty, 01:35:52.760 |
but striving for excellence in whatever definition 01:35:56.600 |
you want to give to beauty, then you try to get 01:36:06.920 |
what loose definitions were you operating under 01:36:10.520 |
with the community of people that you were working on? 01:36:12.640 |
- Oh, the loose definition, I wanted it to appeal to me. 01:36:25.680 |
when I got, volume two came out with the new printing, 01:36:29.920 |
and I was expecting it to be the happiest day of my life. 01:36:52.640 |
I couldn't stand any page that had a two in its page number. 01:37:29.520 |
that would never have been written without this. 01:37:35.760 |
I mean, all these pages that are sitting up there, 01:37:53.640 |
there's the typography, so the look of the type 01:38:06.160 |
- It seems like you could be a little bit more systematic 01:38:20.520 |
- It seems like you're not following your own rule 01:38:32.920 |
what is the Japanese word, wabi-sabi or something, 01:38:40.760 |
are those that have flaws, because then the person 01:38:43.520 |
who perceives them adds their own appreciation, 01:38:48.520 |
and that gives the viewer more satisfaction, or so on. 01:38:52.400 |
But no, no, with typography, I wanted it to look 01:38:57.400 |
as good as I could in the vast majority of cases, 01:39:10.280 |
But I didn't want to say that my job was to get to 100% 01:39:34.360 |
How much of the world about us is shrouded in mystery? 01:39:45.800 |
- How many leading zeros, 0.00, I don't know. 01:39:52.600 |
- How do we think about that, and what do we do about that? 01:39:58.640 |
We do our best, we realize that nobody's perfect, 01:40:07.240 |
but we don't spend time saying we're not there, 01:40:14.800 |
Some mathematicians that would be in the office next to me 01:40:28.600 |
'cause I rarely got up to countable infinity. 01:40:45.960 |
whether the universe isn't just made out of capital N, 01:40:50.960 |
whatever units you wanna call them, quarks or whatever, 01:41:08.440 |
I got this one paper called "Supernatural Numbers," 01:41:33.080 |
and then four arrows and a three or something like that. 01:41:38.600 |
if you have no arrows, that means multiplication. 01:41:47.160 |
If you have one arrow, that means exponentiation. 01:41:50.360 |
So X one arrow Y means X to the X to the X to the X 01:41:58.040 |
that this notation was invented by a guy in 1830, 01:42:12.680 |
who spent his time thinking about stuff like this. 01:42:15.400 |
And it was exactly the same concept that I used arrows, 01:42:23.360 |
But anyway, and then this Ackermann's function 01:42:31.200 |
But anyway, you've got this number 10 quadruple arrow three. 01:42:37.040 |
So that says, well, we take 10 to the 10 to the 10 01:42:54.760 |
because that was only 10 triple arrow quadruple arrow two. 01:43:13.720 |
because I wanna use four arrows and a 10 and a three. 01:43:17.760 |
I mean, let's have that many number of arrows. 01:44:06.080 |
that are too hard for any one person to know, 01:44:20.800 |
and get to ask one question that would get answered, 01:44:34.920 |
No, no, I actually, I don't think it's meaningful 01:44:46.600 |
- Okay, on that note, that's beautiful actually. 01:45:04.320 |
And thank you to our presenting sponsor, Cash App. 01:45:16.960 |
to learn and to dream of engineering our future. 01:45:21.040 |
If you enjoy this podcast, subscribe on YouTube, 01:45:25.440 |
support it on Patreon, or connect with me on Twitter. 01:45:28.840 |
And now let me leave you with some words of wisdom 01:45:33.000 |
We should continually be striving to transform 01:45:42.320 |
Thank you for listening and hope to see you next time.