Richard Karp: Algorithms and Computational Complexity | Lex Fridman Podcast #111
KllCrlfLuzs • 2020-07-26
Transcript preview
Open
Kind: captions
Language: en
the following is a conversation with
richard carp a professor at berkeley
and one of the most important figures in
the history
of theoretical computer science in 1985
he received the touring award for his
research in the theory of algorithms
including the development of the
admirance carp algorithm
for solving the max flow problem on
networks
hopcroft corp algorithm for finding
maximum
cardinality matchings in bipartite
graphs and
his landmark paper and complexity theory
called reducibility
among combinatorial problems in which he
proved
21 problems to be np complete this paper
was probably the most
important catalyst in the explosion of
interest in the study of np completeness
and the p versus np problem in general
quick summary of the ads two sponsors a
sleep mattress
and cash app please consider supporting
this podcast
by going to asleep.com lex
and downloading cash app and using code
lex
podcast click the links buy the stuff it
really is the best way to support this
podcast
if you enjoy this thing subscribe on
youtube review it with 5 stars on apple
podcast
support it on patreon or connect with me
on twitter at lex friedman
as usual i'll do a few minutes of as now
and never any ads in the middle that can
break the flow of the conversation
this show is sponsored by eight sleep
and it's pod pro mattress that you can
check out
at asleep.com lex to get 200
off it controls temperature with an app
it can cool down to as low as 55 degrees
and each side of the bed separately
research shows the temperature has a big
impact on the quality of our sleep
anecdotally it's been a game changer for
me i love it
it's been a couple weeks now i just been
really enjoying it
both in the fact that i'm getting better
sleep and then it's a
smart mattress essentially i kind of
imagine this being the early days of
artificial intelligence being a part of
every aspect of our lives
and certainly infusing ai in one of the
most important aspects of life which is
sleep
i think has a lot of potential for being
beneficial
the pod pro is packed with sensors that
track heart rate
heart rate variability and respiratory
rate
showing it all in their app the app's
health metrics are amazing
but the cooling alone is honestly worth
the money i don't always sleep
but when i do i choose the a-sleep pod
pro mattress
check it out at 8sleep.com to get
two hundred dollars off and remember
just visiting the site and considering
the purchase
helps convince the folks at asleep that
this silly old podcast is worth
sponsoring in the future
this show is also presented by the great
and powerful cash app the number one
finance app in the app store
when you get it use code lex podcast
cash app lets you send money to friends
buy bitcoin and invest in the stock
market with as little as one dollar
it's one of the best designed interfaces
of an app that i've ever used
to me good design is when everything is
easy and natural
bad design is when the app gets in the
way either because it's buggy
or because it tries too hard to be
helpful i'm looking at you clippy from
microsoft
even though i love you anyway there's a
big part of my brain and heart that
loves to design things
and also to appreciate great design by
others so again
if you get cash out from the app store
google play and use the code
lex podcast you get ten dollars and cash
app will also donate ten dollars to
first
an organization that is helping to
advance robotics and stem education
for young people around the world and
now
here's my conversation with richard carp
you wrote that at the age of 13 you were
first exposed to plain geometry
and was wonder struck by the power and
elegance of formal proofs
are there problems proofs properties
ideas and plain geometry that
from that time that you remember being
mesmerized by or just
enjoying to go through to prove
various aspects so michael rabin told me
this story
about an experience he had when he was a
young student
who was ex tossed out of his classroom
for bad behavior and was wandering
through the corridors of his school
and came upon two older students
who were studying the problem of finding
the shortest distance between
two non-overlapping circles
and michael thought about it and said
you take the straight line between the
two centers
and the segment between the two circles
is the shortest
because a straight line is the shortest
distance between the two centers
and any other line connecting the
circles would be
on a longer line and i thought
and he thought and i agreed that this
was just
elegant that pure reasoning could come
up with
such a result certainly the the shortest
distance from the two centers of the
circles
is a straight line could you once again
say
what's the next step in that proof well
any
any segment joining the the two
circles if you extend it
by taking the radius on each side
you get a segment with a path with three
edges which connects the two centers
and this has to be at least as long as
the shortest path which is the straight
line the straight line
yeah wow yeah that is that's quite
quite simple so what what is it about
that elegance that
you just find uh compelling well just
that you could
establish a a fact
about geometry beyond dispute by pure
reasoning
i i also enjoy the challenge of
solving puzzles in plain geometry it was
much more fun
than the earlier mathematics courses
which were mostly about
arithmetic operations and manipulating
them
was was there something about geometry
itself
the slightly visual component of it
yes absolutely although i lacked
three-dimensional vision i wasn't very
good at
three-dimensional vision you mean being
able to visualize three-dimensional
objects
three-dimensional objects or or um
surfaces hyperplanes and so on um
so so there there i didn't have an
intuition
but
for example the fact that the sum of the
angles of a triangle is 180 degrees
is proved convincingly
um and it comes as a surprise that that
can be done
why is that surprising the the
well it is a surprising uh is a
surprising idea
i suppose uh why is that proved
difficult it's not
that's the point it's so easy and yet
it's so convincing
do you remember what is the proof that
it's um
as up to 180 uh you you
start at a corner and draw
a line um
parallel to the opposite side
and that line sort of trisects the angle
between the other two sides
and uh you you get a
uh a half plane which has to add up to
180 degrees
and it consists in the angles by
by the equality of uh alternate
angles what's it called
you you you get a correspondence between
the angles
created by the side along the side of
the
triangle and the three angles of the
triangle
has geometry had an impact on when you
look into the future of
your work with combinatorial algorithms
has it had some kind of
impact in terms of yeah being able
the puzzles the visual aspects that were
first
so compelling to you not euclidean
geometry
particularly i think
i use tools like linear programming and
integer programming a lot and
but those require
high dimensional visualization and so i
tend to go by the
algebraic properties um right the
you you go by the algebra the linear
algebra and not by the
the visualization well the
interpretation in terms of
for example finding the highest point on
a polyhedron
as in linear programming
is motivating but again
it i don't have the high dimensional
intuition
that would particularly inform me so i
sort of deep lean on the algebra
so to linger on that point what kind of
visualization
do you like do you do when you're trying
to think about
we'll get to combinatorial algorithms
but just algorithms in general
yeah what kind of what what's inside
your mind when you're thinking about
designing algorithms
or or even just tackling any any
mathematical problem
well i think that usually an algorithm
is uh involves a repetition of some
inner loop and
and so i can sort of visualize the um
the distance from the desired solution
as iteratively reducing until you
finally hit the exact solution and try
to take steps that get you closer to the
try to
take steps that get closer and having
the certainty of
converging so it's it's racist
it's basically the mechanics of the
algorithm is often very simple
but especially when you're trying
something out on the computer so for
example
i did some work on the traveling
salesman problem and
i could see there was a particular
function that had to be
minimized and it was fascinating to see
the successive approaches to the minimum
to the optimum
you mean so first of all traveling
salesman problems where you have to
visit
uh every city without ever
the only ones yeah that's right find the
shortest path through
cities yeah uh which is sort of a
canonical standard a really nice problem
that's really hard
right exactly so can you say again
what was nice about the objective being
able to think about the objective
function there and
maximizing it or minimizing it well just
that the um as the algorithm proceeded
it was you were making progress
continual progress
and and eventually getting to the
optimum point
so there's two two parts maybe
maybe you can correct me but first is
like getting an intuition about what the
solution would look like
and or even maybe coming up with a
solution and two is proving that this
thing is
actually going to be pretty good uh what
part is harder for you where's the magic
happen
is it in the first sets of intuitions or
is it
in the detail the messy details of
actually showing
that it is going to get to the exact
solution
and it's going to run at this
at a certain complexity
well the magic is just the fact that it
the the gap from the optimum
decreases monotonically and you can see
it happening
and um various metrics of
what's going on are improving all along
until finally hit the optimum perhaps
later we'll talk about the assignment
problem and i can
illustrate illustrate a little better
yeah now zooming out again
as you write don knuth has called
attention to a breed of people
who derive great aesthetic
pleasure from contemplating the
structure of computational processes
so don calls these folks geeks and you
write that you remember the moment you
realized you were such a person
you were shown the hungarian algorithm
to solve the assignment problem
right so perhaps you can explain what
the assignment problem is and what
uh the hungarian algorithm is
so in the assignment problem you have uh
n boys and in girls and
you are given the desirability
of uh or the cost of matching
the i boy with the jth girl for all i
and j
you're given a matrix of numbers
and you want to find the
one-to-one matching of the boys with the
girls
such that the some of the associated
costs will be
minimized so the the best way
to match the boys with the girls or men
with jobs or any
two sets um no any possible matching is
possible
or yeah all one-to-one correspondences
are
permissible if there is a connection
that is not allowed
then you can think of it as having an
infinite cost
so um what you do is
uh to depend on
the observation that
the identity of the optimal
assignment or as we call it the optimal
permutation
um is not changed if you subtract
a constant from any row or column of the
matrix
you can see that the comparison between
the different assignments is not changed
by that
um because you're penal if you decrease
a particular row
all the elements of a row by some
constant
all solutions decrease by the cost of
that
by an amount equal to that constant
so the idea of the algorithm is to start
with a matrix of
non-negative numbers and
keep subtracting from rows or from
our entire columns um
in such a way that you subtract the same
constant from all the elements of that
row or column
uh while maintaining the property that
um uh
all the elements are non-negative
simple yeah and so and so
um what you have to do
is uh is find
small moves which will decrease the
total cost
while subtracting constants from rows
or columns and there's a particular way
of doing that by computing a kind of
shortest path through the elements in
the matrix
and you just keep going in this way
until you finally get a full permutation
of zeros while the matrix is
non-negative and then you know that that
has to be the cheapest
is that as simple as it sounds
so the the shortest path of the matrix
part
yeah the simplicity lies in how you find
the what i oversimplified slightly what
you
you you will end up subtracting a
constant from some rows
or columns and adding the same constant
back to other rows and columns
so as not to not to reduce any of the
zero
elements you leave them unchanged
but
each individual step modifies us
several rows and columns by the same
amount but
overall decreases the cost so there's
something about
that elegance that made you go aha this
is a beautiful
like it's it's uh it's amazing that
something like this
something so simple can solve a problem
like this yeah it's really cool
if i had mechanical ability i would
probably like to do
woodworking or other activities where
you sort of
shape something in into something
beautiful and orderly and there's
something about the orderly
systematic nature of uh
that innovative algorithm that is
pleasing to me
so what do you think about this idea of
geeks as don knuth calls them
what do you think of is it something uh
specific
to a mindset that allows you to discover
the elegance and
computational processes or is this all
of us can all of us discover this beauty
are you born this way
i think so i always like to play with
numbers i i
i used to amuse myself by multiplying
four digit
decimal numbers in my head and
putting myself to sleep by starting with
one and
doubling the number as long as i could
go and uh
testing my memory my ability to retain
the information
and i also read somewhere that you uh
you wrote
that you enjoyed uh showing off to your
friends
by i believe multiplying four digit
numbers
uh right a couple of four digit numbers
yeah i had a summer job at a beach
resort outside of boston
and uh the other employee i
i was the barker at a skee-ball game
yeah i used to i used to sit at a
microph
microphone saying come one come all come
in and play ski ball
five cents to play nickel to win and so
on that's what a barker i was gonna
i wasn't sure if i should know but
barker that's so you're the
the charming outgoing person is getting
people to uh come in
yeah well i wasn't particularly charming
but i could be very
repetitious and loud and
the other employees were
sort of juvenile delinquents who had no
academic bent but somehow
i found that i could impress them by
by performing this mental melter or
mental arithmetic
you know there's something too that you
know one of
some of the most popular videos on the
internet
is uh there's a there's a youtube
channel called number file that shows
off different mathematical ideas
there's still something really
profoundly interesting to people
about math the the beauty of it
something
even if they don't understand the basic
concept
even being discussed there's something
compelling to it what do you think that
is
any lessons you drew from the early teen
years when you were
showing off to your friends with the
numbers
like is what is it that attracts us to
the beauty of mathematics do you think
the general population not just
the the computer scientists and math the
magicians
i think that it you know you can do
amazing things you can
test whether large numbers are prime
you can uh um
you can solve little puzzles about
cannibals and missionaries
and there's a kind of achievement it's
it's it's
puzzle solving and at a higher level the
fact that you can
you can do this reasoning that you can
prove in an
absolutely ironclad way that the some of
the
angles of a triangle is 180 degrees
yeah it's a nice escape from the
messiness of the real world
where nothing can be proved so and we'll
talk about it but
sometimes the ability to map the real
world into such problems where you can't
prove it is this a is a powerful step
yeah it's amazing that we can do this
another attribute of geeks is they
they're not necessarily uh endowed with
emotional intelligence
so they can live in a world of
abstractions without having to
uh master the complexities of uh dealing
with people
so just to link on the historical note
as a phd student in 1955
he joined the computational lab at
harvard where
howard aiken had built the mark 1 and
the mark iv computers
just to take a step back into that
history what were those computers like
uh the mark iv filled
me a large room much big much bigger
than this large office that we were
talking in now and you could walk around
inside it
they were they were rows of
relays you could just walk around the
interior
and uh the
machine would sometimes fail because of
bugs which literally meant flying
creatures landing on the switches
so i never i never used that machine for
any
practical purpose the
lab eventually acquired a uh
one of one of the earlier um commercial
computers
this is already in the 60s no in the mid
50s in mid 50s
or mid late 50s there was already usual
computers in there yeah we had a univac
a 2000
univac with 2000 words of storage
and so you had to work hard to allocate
the memory properly to
also the excess time from one word to
another
depended on the number of
the particular words and so you there
was an
art to sort of arranging the storage
allocation to
make fetching data rapid
were you attracted to this actual
physical world implementation
of mathematics so it's a mathematical
machine that's
actually doing the math physically
no not at all i think i was a
i was attracted to the underlying
algorithms
so but did you draw any inspiration so
could you have imagined like what did
you imagine was the future of these
giant computers could you imagine that
60 years later would have billions of
these computers
all over the world i couldn't imagine
that
but there was a sense in the
laboratory that this was the wave of the
future
in fact my mother influenced me she she
told me that
data processing was going to be really
big and i should get into it
she's a smart woman yeah she was a smart
woman
and there was just a feeling that
this was going to change the world but i
i didn't think of it in terms of
personal computing i hadn't that
i had no anticipation that we would be
walking around with computers in our
pockets or anything like that
did you see computers as
tools as mathematical mechanisms to
analyze sort of
sort of theoretical computer science or
as the ai folks which is an entire
other community of dreamers yeah that's
something that could
one day have human level intelligence
well ai wasn't very
much on my radar i did read uh turing's
paper about the uh the uh
the uh the drawing test computing and
intelligence
yeah the turing test um what'd you think
about that paper was that just like
science fiction
um i thought that it wasn't a very good
test because it was too subjective so i
i didn't
feel that i didn't feel that the turing
test was really the right way to
calibrate how intelligent an algorithm
could be
to linger on that do you think it's pos
because you've come up with some
incredible
tests later on tests on algorithms right
yeah that are
like strong reliable robust across a
bunch of different classes of algorithms
but returning to this emotional
mess that is intelligence do you think
it's possible
to come up with the test that's as
iron-clad as
some of the computational complexity
work
well i think the greater question is
whether it's possible to achieve
human level level intelligence
right so that's so first of all let me
at the philosophical level do you think
it's possible to create algorithms
that reason and
would seem to us to have the same kind
of intelligence as human beings
it's an open question um it seems to me
that um most of the achievements have
acquire operate within a very limited
set of ground rules and for a very
limited precise task
which is a quite different situation
from the
processes that go on in the minds of
humans which
where they have to sort of function in
changing environments
they have emotions they have
[Music]
um
physical attributes for acquire for
exploring their environment
um they have intuition they have desires
um emotions and
i don't see anything in the current
achievements of what's called
ai that come close to that capability i
don't think there's any
computer program which
surpasses a six-month-old child in terms
of
comprehension of the world
do you think this complexity of human
intelligence
all the cognitive abilities we have all
the emotion
do you think that could be reduced one
day or just
fundamentally can it be reduced to an
out a set of algorithms or an algorithm
so can a touring machine achieve human
level intelligence
i am doubtful about that i guess the
argument
in favor of it is that the human brain
seems to achieve
what we call intelligence cognitive
abilities of different kinds
and if you buy the premise that the
human brain is
just an enormous interconnected set of
switches so to speak
then in principle you should be able to
diagnose what that interconnection
structure is like
characterize the individual switches and
build a
simulation outside but
why that may be true in principle that
cannot be the way we're
eventually going to tackle this problem
it's
you know you know that that does not
seem like a feasible way to go about it
so it there is however an existence
proof that
um uh if you believe that the brain is
is just a network of
of neurons operating by rules i guess
you could say that that's an existence
proof of the ability to build
the capabilities of a mechanism um
but it would be almost impossible to
acquire the information unless we got
enough insight into the operation of the
brain but there's so much mystery there
do you think what do you make of
consciousness for example
there's something as an example of
something we completely have no clue
about
the fact that we have this subjective
experience right is it possible that
this
network of uh this circuit of switches
is able to create something like
consciousness to know its own identity
yeah to know to know the algorithm to
know itself
to know itself i think if you try to
define that
rigorously you'd have a lot of trouble
yeah that's interesting
so i know that there are
many who um
believe that general
intelligence can be achieved and there
are even some who are
feel certain that uh
the singularity will come and uh we will
be surpassed by the machines which will
then
learn more and more about themselves and
reduce humans to an inferior breed
i am doubtful that this will ever be
achieved
just for the fun of it could you linger
on why
what's your intuition why you're
doubtful so there are
quite a few people that are extremely
worried about this
uh existential threat of artificial
intelligence of us being
left behind by the super intelligent
new species what's your intuition why
that's not quite
likely just because
none of the achievements in speech
or robotics or
natural language processing or creation
of
flexible computer assistance or any of
that comes
anywhere near close to
that level of cognition
what do you think about ideas as a sort
of uh if we look at moore's law
and exponential improvement uh to allow
us to
that would surprise us sort of our
intuition fall apart with with
exponential improvement
because i mean we're not able to kind of
we kind of think in linear improvement
yeah we're not able to imagine a world
that goes from the
mark one computer to a an iphone 10.
yeah so do you think it would be we
could be really surprised
by the exponential growth or
or on the flip side is is it possible
that also intelligence is
actually way way way way harder
even with exponential improvement to be
able to crack
i don't think any constant factor
improvement
could could change things and given
given our current comprehension
of how the of
of what cognition requires it seems to
me that
multiplying the speed of the switches by
a factor of a thousand or a million
uh will not be useful until we really
understand the organizational principle
behind the network of switches
well let's jump into the network of
switches and talk about combinatorial
algorithms if we could
let's step back with the very basics
what are combinatorial algorithms
and what are some major examples of
problems they aim to solve a
combinatorial algorithm
is is one which
deals with a a
system of discrete objects that can
occupy various states or take on various
values from a discrete set of values
um and need to be arranged or
or selected um in such a way as to
achieve some to minimize some cost
function
or to prove or to prove the existence of
some
combinatorial so an example
would be um coloring the vertices of a
graph
what's a graph let's step back so what
uh
and it's fun to uh to ask
one of the greatest computer scientists
of all time the most basic questions in
the beginning of most books
but for people who might not know but in
general how you think about it what is
what is a graph
uh a graph that's that's simple it's a
set of points
certain pairs of which are joined by
lines
called edges and they
sort of represent the in different
applications represent the
interconnections between
discrete objects so they could be the
interactions interconnections between
switches
in a digital circuit or
interconnections indicating the
communication patterns of a human
community
um and they could be directed or
undirected and then as you've mentioned
before
might have costs right they can be
directed or undirected
they can be you can think of them as if
if you think if a graph were
representing a
communication network then the edge
could be undirected meaning that
information could flow along it in both
directions
or it could be directed with only
one-way communication
a road system is another example of a
graph with weights
on the edges and then a lot of problems
of optimizing
the efficiency of such networks or
learning about the performance of such
networks
um uh are the
the objective combinatorial algorithm so
it could be
scheduling classes at a school where
the the
vertices the nodes of the network are
the individual
classes and uh the edges indicate the
constraints which say that certain
classes cannot take place at the same
time or
certain teachers are available only at
cert for certain classes
etc or um
i talked earlier about the assignment
problem of matching the boys with the
girls
um where um
you have a very graph with an edge from
each boy to each girl
with a weight indicating the cost
or in logical design of computers
you might want to find a
set of so-called gates switches
that perform logical functions which can
be interconnected to realize some
function
so you you might ask um
how many gates do you need in order to
um
for for a circuit to
give a yes output if at least
a given number of its inputs are ones
and no if not a few are
are present my favorite is probably
all the all the work with network flows
so anytime you have
uh i don't know why it's so compelling
but there's something just beautiful
about it it seems like there's so many
applications and communication networks
in uh traffic right flow
that you can map into these and then you
can think of pipes
and water going through pipes and you
could optimize it in different ways
there's something
always visually and intellectually
compelling to me about it and of course
you've done work there
yeah yeah so so there
the edges represent channels along which
some commodity can flow it might be
gas it might be water it might be
information
maybe supply chain as well like products
being products flowing from one
operation to another
and the edges have a capacity which is
the rate at which the commodity can flow
and a central problem is to
determine given a network of these
channels in this case the edges are
communication channels
the the challenge is to find the maximum
rate
at which the information can flow along
these channels to get from
a source to a destination and
that's a that's a fundamental
combinatorial problem that i i've worked
on
jointly with the scientist jack edmunds
we
i think we're the first to give a formal
proof that
this maximum flow problem through a
network
can be solved in polynomial time
which uh i remember the first time i
learned that
just learning that in um
maybe even grad school i don't think it
was even undergrad no
algorithm yeah do netfl network flows
get taught in in um basic algorithms
courses
yes probably okay so yeah i've i
remember being very surprised that max
flow
is a polynomial time algorithm yeah that
there's a nice fast algorithm that
solves max flow
but so there is an algorithm
named after you an admins they haven't
carp algorithm for max flow so
what was it like tackling that problem
and trying to arrive at a polynomial
time solution
and maybe you can describe the algorithm
maybe you can describe what's the
running time complexity
that you showed yeah well
first of all what is a polynomial time
algorithm yeah perhaps we could
discuss that so yeah let's let's
actually just even
yeah that's what is algorithmic
algorithmic complexity what are the
major
classes of algorithm complexity
so we in in a problem like the
assignment problem
or scheduling schools or
any of these applications um
you have a set of input data
which might for example be um
a set of vertices connected by edges
with
being you're given for each edge the
capacity of the edge
and you have algorithms
which are think of them as computer
programs with operations such as
addition subtraction
multiplication division comparison of
numbers and so on
and you're trying to construct an
algorithm
based on those operations
which will determine in a minimum number
of
computational steps the answer to the
problem in this case the computational
step
is one of those operations and the
answer to the problem
is let's say the um
the configuration of the network that
carries the maximum amount of flow
and an algorithm is said to run in
polynomial time
if as a function of the size of the
input the number of vertices the number
of edges and so on
the number of basic computational steps
grows
only as some fixed power of that size
a linear algorithm would
execute a number of steps linearly
proportional to the size
quadratic algorithm would be steps
proportional to the square of the size
and so on
and algorithms that whose running time
is bounded by some
fixed power of the size are called
polynomial algorithms
and that's supposed to be relatively
fast class of algorithms that's right we
theoreticians take that to be
the definition of an algorithm being
um efficient and and
we're interested in which problems can
be solved by such
efficient algorithms one can argue
whether that's
the right definition of efficient
because you
could have an algorithm whose running
time is the ten thousandth
power of the size of the input and that
wouldn't be
really efficient and in practice it's
oftentimes
reducing from an n squared algorithm to
an n log n or a linear time
is practically the jump that you want to
make
to allow a real world system to solve a
problem
yeah that's also true because especially
as we get very large networks
the size can be in the millions and uh
and then anything above uh
n log n where n is the size would be
uh too much for a practical solution
okay so that's polynomial time
algorithms what other classes of
algorithms are there
what's so that usually they they
designate polynomials of the letter p
yeah there's also
np np complete and be hard yeah
so can you try to disentangle those and
by trying to define them simply
right so a polynomial time algorithm is
one which
was running time is bounded by a
polynomial and the size of the input
uh there's then there's that the class
of such algorithms is
called p in the worst case by the way we
should say
right yeah for every case of the problem
and that's very important that
in this theory when we measure the
complexity of an algorithm
we really measure the
number of step the growth of the number
of steps
in the worst case so you may have an
algorithm that
[Music]
runs very rapidly in most cases but if
there is
any case where it gets into a very long
computation
that would increase the computational
complexity by this measure
and that's a very important issue
because there
as we may have discussed later there are
some very important algorithms which
don't have a good
standing from the point of view of their
worst case performance
and yet are very effective so
so theoreticians are interested in p the
class of problem solvable in polynomial
time
then there's np
which is the class of problems
which may be hard to solve but where the
where when confronted with the solution
you can check it
in polynomial time let me give you an
example there
so if we look at the assignment problem
uh so you have
uh n boys you have n girls you the
number of numbers that
you need to write down to specify the
problem instances
n squared and the question
is
how many steps are needed to solve it
and
jack edmonds and i were the first to
show that it could be done in time
n cubed uh earlier algorithms required
n to the fourth so as a polynomial
function of the size of the input this
is a
fast algorithm now to illustrate the
class
np the question is how long
would it take to verify that a solution
is optimal so for example
if if the input was a graph
we might want to find the largest
clique in the graph or a clique is a set
of vertices
such that any vertex each vertex in the
set is adjacent
to each of the others so the
clique is a complete subgraph
yeah so if it's a facebook social
network everybody's friends
with everybody else it's close click no
that would be what's called a complete
graph it would be
no i mean uh within that click uh within
that clique yeah
yeah they're all friends so a complete
graph is when
everybody is friendly as everybody is
friends with everybody yeah
so the problem might be to determine
whether in a given graph there exists a
clique
of a certain size
well that turns out to be a very hard
problem but how
but if somebody hands you a clique and
asks you to check
whether it is a hands you a set of
vertices and ask you to check whether
it's a clique
you could do that simply by exhaustively
looking at all of the edges between the
vertices and the clique
and verifying that they're all there and
that's a polynomial time
that's a polynomial so the verify there
the problem of finding the clique
appears to be extremely hard but the
problem of verifying a clique
to see if it reaches the target number
of vertices
is easy to solve is easy to verify
so finding the clique is hard checking
it is easy
problems of that nature are called the
non-deterministic polynomial time
algorithms
and that's the class np
and what about mp complete and be hard
okay
let's talk about problems where you're
getting a yes no a yes or no answer
rather than a numerical value so either
there is a
a perfect matching of the of the
boys with the girls or there isn't
it's clear that um every problem in p
is also in np if you can solve the
problem
exactly then you can certainly verify
the solution on the other hand
there are problems in the class np
this is the class of problems that are
easy to check
although they may be hard to solve it's
not at all clear that
problems in np lie in p so for example
if we're
looking at scheduling classes at a
school
the fact that you can
verify when handed a schedule for the
school whether it meets all the
requirements
that doesn't mean that you can find the
schedule rapidly
so intuitively np non-deterministic
polynomial
checking rather than finding
is going to be harder than
is going to include is easier checking
is easier and therefore the class of
problems that can be checked
appears to be much larger than the class
of problems that can be solved
and then you keep adding appears to and
uh sort of these uh additional words
that designate that we don't know for
sure yet
we don't know for sure so the
theoretical question which is considered
to be the most central problem in
theoretical computer science or at least
computational complexity theory
combinatorial algorithm theory
the question is whether p is equal to np
if p were equal to np it would be
amazing it would mean
that every
problem where a solution can be rapidly
checked can actually be solved in
polynomial time we don't really believe
that's true
if you're scheduling classes at a school
it's we expect that if somebody hands
you
a satisfying schedule you can verify
that it works
that doesn't mean that you should be
able to find such a schedule
so intuitively np encompasses a lot more
problems than p so can
we take a small tangent and break apart
that intuition
so do you first of all think that
the biggest sort of open problem in
computer science maybe mathematics
is whether p equals np do you think
p equals np or do you think p
is not equal to np if you had to bet all
your money on it
i would bet that p is unequal to np
uh simply because there are problems
that have been around for centuries and
have been studied intensively in
mathematics
and even more so in the last 50 years
since the
p versus np was stated and
no polynomial time algorithms have been
found for these
easy to check problems so one
one example is a problem that goes back
to the mathematician
gauss who is interested in um
factoring large numbers so uh
we know what a number is prime if it
doesn't
if it cannot be written as the product
of
two or more numbers unequal to one
uh so if we can factor the a number like
91 that's 7 times 13
but if i give you
20 digit or 30 digit numbers you're
probably going to be at a loss to
have any idea whether they can be
factored
so the pr the problem of factoring very
large numbers
is does not appear to have an efficient
solution
but once you have found the factors
express the number as a product the two
smaller numbers you can quickly verify
that they are factors of the number
and your intuition is a lot of people
finding you know this
a lot of brilliant people have tried to
find algorithms for this one particular
problem there's
many others like it that are really well
studied and it would be great
to find an efficient algorithm for right
and in fact we have
some results that i was instrumental in
obtaining
following up on work by the
mathematician stephen cook
to show that within the class
np of easy to check problems
there's a huge number that are
equivalent in the sense that either
all of them or none of them lie in p
and this happens only if p is equal to
np
so if p is unequal to np we would also
know
that
virtually all the standard combinatorial
problems
if p is unequal to np none of them can
be solved in polynomial time
can you explain how that's possible to
tie together so many problems
in a nice bunch that if one is proven to
be efficient
then all are the first
and most important stage of progress was
a result by stephen cook
who showed that a certain problem called
the satisfiability problem
of propositional logic
is as hard as any problem in the class p
so the propositional logic problem
is expressed in terms of
expressions involving the logical
operations
and or and not offering operating
operating on variables that can be
either true or false
so an instance of the problem would be
some formula involving and or and not
and the question would be whether there
is an assignment of
truth values to the variables in the
problem
that would make the formula true so for
example if i take
the formula a or b and a or not b
and not a or b and not a
or not b and take the conjunction of all
four of those
so-called expressions you can determine
that
no assignment of truth values to the
variables a and b
will allow that conjunction of
cl what are called clauses uh to be true
so that's an example of a formula
in propositional logic
involving expressions based on the
operations and
or and not um that's an example of a
problem which has which is not
satisfiable there is no solution that
satisfies all of those constraints
and that's like one of the cleanest and
fundamental problems in computer science
it's like a nice statement of a really
hard problem it's a nice statement a
really hard problem
and and what cook showed is that
every problem in np
is can be re-expressed as
an instance of the satisfiability
problem
so to do that
he used the observation that a very
simple abstract machine called the
turing machine
can be used to describe
any algorithm
an algorithm for any realistic computer
can be translated
into an equivalent algorithm
on one of these turing machines which
are extremely simple
it's a tour machine there's a tape and
you can yeah you have to walk along that
data on a tape and you have basic
instructions
a finite list of instructions which say
we
would say if you're reading a particular
symbol on the tape
and you're in a particular state then
you can move to
a different state and change the state
of the number that you
or the element that you were looking at
the cell of the tape that you were
looking at
and that was like a metaphor and a
mathematical construct that touring put
together to represent
all possible computation all possible
computation now one of these
so-called turing machines is too simple
to be useful in practice
but for theoretical purposes we can
depend on the
fact that an algorithm for any computer
can be
translated into one that would run on a
turing machine
right and then using that fact
um he could sort of describe
any possible nondeterministic polynomial
time algorithm any pro
any algorithm for a problem in np
could be expressed as a sequence of
moves of the turing machine described in
terms of
reading a symbol on the tape
while you're in a given state and moving
to a new state and leaving behind a new
new symbol and given that
the fact that any non-deterministic
polynomial time algorithm
can be described by a list of such
instructions
you could translate the problem
into the language of the satisfiability
problem
is that amazing to you by the way if you
take yourself back when you were first
thinking about the space of problems is
that
how amazing is that it's astonishing
when you look at cook's proof it's not
too difficult to
sort of figure out why this is
why this is so but the implications are
staggering
it tells us that this of all the
problems in
np all the problems where solutions are
easy to check
they can they can all be rewritten
in terms of the satisfiability problem
yeah it's a in adding so much more
weight to the p equals np
question because all it takes is to show
that one
that's right one algorithm in this class
so the p versus np
can be re-expressed is simply asking
whether the
satisfiability problem of propositional
logic
you'll solve a billion polynomial time
but there's more
uh i i encountered cook's paper
when he published it in a conference in
1971.
yeah so when i saw uh cook's paper and
saw
this uh reduction event of all of each
of the problems in np
by a uniform method to to the
satisfiability problem of propositional
logic
that meant that the satisfiability
problem was a universal combinatorial
problem
and it occurred to me
through experience i had had in trying
to solve other combinatorial problems
that there were many other problems
which
seemed to have that universal structure
and so i began looking for
reductions from the satisfiability
to other problems
one of the other problems would be the
so-called integer programming problem
of solving a determining whether there's
a solution to a
um a set of linear inequalities
involving
integer variables just like linear
programming but there's a constraint
that the variables must remain integers
integers in fact must be either zero or
one
because they could only take on those
values and that makes the problem much
harder
yes that makes the problem much harder
and
it was not difficult to show that
the satisfiability problem can be
restated
as an integer programming problem so can
you pause on that was that one of the
first problem
mappings that you try to do and how hard
is that map you said it wasn't hard to
show but
you know that's a that's a big
leap it is a big leap yeah
well let me let me give you another
example um
another problem in np is whether a graph
contains a clique of a given size
and now the question is can we reduce
the propositional
logic problem to the problem
of whether there's a clique of a certain
size
well if you look at the propositional
logic problem it can be expressed as a
number of
clauses each of which is
a
of the form a
or b or c where a is either one of the
variables in the problem or the
negation of one of the variables
and the
an instance of the propositional logic
problem
can be rewritten using operations of
boolean logic can be re
rewritten as the conjunction of a set of
clauses
the and of a set of ors where each
clause
is a disjunction an or
of variables or negated variables
so the pro the question of uh
the in the satisfiability problem
is whether those clauses can be
simultaneously
satisfied now to satisfy all those
clauses you have to
find one of the terms in each clause
which is going to be given that which is
going to be true in your truth
assignment
but you can't make the same variable
both true and false
so if you have the variable a
in one clause and you want to
satisfy that clause by making a true you
can't also make
the complement of a true in some other
clause and so the goal is to make every
single clause
true if it's possible to satisfy this
and
the way you make it true is at least one
term in the clause must be
it must be true so
so now we uh to convert this problem
to something called the independent set
problem where you're
just sort of asking for a set of
vertices in a graph such that no two of
them are adjacent sort of the opposite
of the clique problem
so we've seen that we can now
express that as
finding a
set of terms one in each clause
without picking both the variable
and the negation of that variable
because you if the variable is assigned
the truth value
the negated variable has to have the
opposite truth value
right and so we can construct the graph
where the vertices are the
terms in all of the clauses
and you have an edge
between two
terms if um
if an edge between
two occurrences of terms
if they're both in the same clause
because you're only picking one
element from each clause and also
an edge between them if they represent
opposite values of the same variable
because you can't make a variable both
true and false
and so you get a graph where you have
all of these
occurrences of variables you have edges
which which mean that you're not allowed
to choose
both ends of the edge either because
they're in the same clause or they're
con negations of one another all right
and that's uh
first of all sort of to zoom out that's
a really powerful idea that you can take
a graph and connect it to a
logic equation right somehow and do that
mapping for
all possible formulations of a
particular problem on a graph
yeah i mean that that
still is hard for me to believe that
that's possible
that that they're like what do you make
of that
that um there's such a union of
there's such a friendship among all
these problems across
that somehow are akin to combinatorial
uh algorithms that they're all somehow
related
yeah i i know it can be proven yeah but
what do you make of it
that that that's true
well if they just have the same
expressive power
you can take any one of them and
translate it into the terms of the other
you know
the fact that they have the same
expressive power also somehow
means that they can be translatable
right
and what i did in the 1971 paper was to
take
21 fundamental problems
commonly occurring problems of packing
covering matching and so forth
or lying in the class np
and show that the satisfiability problem
can be
re-expressed as any of those that any of
those have the same
expressive proper uh expressive power
so and that was like throwing down the
gauntlet of saying
there's probably many more problems like
this right but that's just saying that
look that
they're all the same they're all the
same but not exactly
yeah yeah they're all the same in terms
of whether they are
um rich enough to express any of the
others
but that doesn't mean that they have the
same computational complexity
but what we can say is that either
all of these problems or none of them
are solvable in polynomial time
yeah so where does np completeness and
np
hard classes well that's just a small
technicality
so when we're talking about decision
problems
that means that the answer is just yes
or no
there is a clique of size 15 or there's
not a clique of size 15.
on the other hand an optimization
problem would be asking
find the largest clique the answer would
not be yes or no it would be
15. so um
so when you're asking for the
when you're putting a valuation on the
different solutions
and you're asking for the one with the
highest valuation that's an optimization
problem
and there's a very close affinity
between the two kinds of problems
but the counterpart of
being the hardest decision problem
the hardest yes no problem the kind of
part of that
uh is is to minimize or maximize
an objective function and so a problem
that's
hardest in the class when viewed in
terms of optimization
those are called np-hard rather than
np-complete and np-complete is for
decision problems and np-complete is for
decision problems so
if somebody shows that p equals np
what do you think that proof will look
like
if you were to put on yourself if it's
possible to show that as a proof
or to demonstrate an algorithm
all i can say is that it will involve
concepts that we do not now have
and approaches that we don't have do you
think those concepts are out there
in terms of inside complexity theory
inside of computational analysis of
algorithms do you think there's concepts
that are totally outside of the box
that we haven't consi
Resume
Read
file updated 2026-02-13 13:23:37 UTC
Categories
Manage