Algorithm Design and Analysis

Follow Algorithm Design and Analysis
Share on
Copy link to clipboard

The purpose of this undergraduate course is to introduce fundamental techniques and viewpoints for the design and the analysis of efficient computer algorithms, and to study important specific algorithms. The course relies heavily on mathematics and mathematical thinking in two ways: first as a way…

Dan Gusfield

  • Dec 3, 2010 LATEST EPISODE
  • infrequent NEW EPISODES
  • 45m AVG DURATION
  • 30 EPISODES


Search for episodes from Algorithm Design and Analysis with a specific topic:

Latest episodes from Algorithm Design and Analysis

Coping with NP-completeness

Play Episode Listen Later Dec 3, 2010 39:36


Lecture 28: Gusfield recaps NP-completeness. The professor discusses coping with NP-complete problems: approximation algorithms and lowering the exponent of exponential-time algorithms.

Major theorems of NP-completeness

Play Episode Listen Later Dec 1, 2010 50:25


Lecture 27 covers the major theorems of NP-completeness, P = NP question, and how to prove a new problem in NP-complete.

Formal definition of P and NP

Play Episode Listen Later Nov 29, 2010 45:29


In Lecture 26, Gusfield gives correct, formal definitions of P and NP, ending with a brief definition of NP-complete problems (languages).

An intuitive view of NP

Play Episode Listen Later Nov 24, 2010 48:02


Lecture 25 deals with an intuitive view of NP - not the correct formal definition.

Introduction to P and NP

Play Episode Listen Later Nov 22, 2010 50:07


Lecture 24 gives an introduction to P and NP and polynomial-time reductions.

Introduction to approximation algorithms

Play Episode Listen Later Nov 17, 2010 47:51


Lecture 23 covers approximation algorithms - definition, factor of two approximation for the center cover problem.

Finish of linear-time pattern matching

Play Episode Listen Later Nov 15, 2010 51:35


Lecture 22 completes linear-time pattern matching using the Z-algorithm

Linear-time pattern matching. Z-values and Z-algorithm

Play Episode Listen Later Nov 12, 2010 51:45


In Lecture 21, Gusfield covers linear-time pattern matching. He also discusses Z-values and Z-algorithms.

Unique-Decipherability. Graph algorithm and proof of correctness

Play Episode Listen Later Nov 10, 2010 51:19


Lecture 20 deals with unique-decipherability: efficient graph-based algorithm and proof of correctness.

The unique-decipherability problem

Play Episode Listen Later Nov 8, 2010 52:19


Lecture 19 covers the unique-decipherability problem and gives definitions and the start of a graph-based solution.

Floyd-Warshall algorithm for all-pairs shortest path

Play Episode Listen Later Nov 5, 2010 48:28


In Lecture 18, Gusfield discusses Floyd-Warshall, the algorithm for computing the shortest path in a weighted graph between each pair of nodes in the graph.

Dynamic programming for shortest path problem

Play Episode Listen Later Nov 3, 2010 37:29


Lecture 17 covers dynamic programming for the shortest path problem in a weighted directed graph, as well as negative edge weights allowed but no negative cycles.

Dynamic programming for RNA folding.

Play Episode Listen Later Nov 1, 2010 49:35


Lecture 16 deals with the solution to the RNA folding problem using dynamic programming.

Intro to the RNA folding problem and recurrences

Play Episode Listen Later Oct 29, 2010 50:08


In Lecture 15, Gusfield finishes the discussion of interval selection, and then introduces the RNA folding problem and talks about recurrences for it.

Intro to dynamic programming, weighted interval problems

Play Episode Listen Later Oct 27, 2010 49:36


Lecture 14 reviews memoization; introduction to dynamic programming (DP) for the weighted interval problem and traceback in DP.

Recursive programming and memoization

Play Episode Listen Later Oct 22, 2010 47:37


In Lecture 13, Gusfield introduces recursive programming and memoization through the problem of computing the maximum weight set of pairwise non-overlapping intervals.

Correctness of Kruskal's algorithm.

Play Episode Listen Later Oct 20, 2010 26:41


In Lecture 12, Gusfield talks about the proof of correctness of Kruskal's algorithm.

Start of minimum spanning tree problem

Play Episode Listen Later Oct 18, 2010 49:34


In Lecture 11, Gusfield covers Prim's algorithm and analysis, and Kruskal's algorithm.

Dijkstra's shortest path algorithm

Play Episode Listen Later Oct 15, 2010 51:41


In Lecture 10, students learn about Dijkstra's algorithm for shortest paths in a graph with non-negative edge weights.

Greedy algorithms: The classroom scheduling problem

Play Episode Listen Later Oct 14, 2010 16:35


In Lecture 9A, Gusfield provides another scheduling problem to be solved by a greedy algorithm.

Greedy algorithms: Picking largest set of non-overlapping intervals

Play Episode Listen Later Oct 13, 2010 50:30


For Lecture 9, Gusfield starts discussion of greedy algorithms: Picking the largest number of non-overlapping intervals on a line.

Expected number of comparisons in randomized select

Play Episode Listen Later Oct 11, 2010 50:10


In Lecture 8, Gusfield completes his analysis of the expected number of comparisons in randomized version of Select(S,k) as a function of |S|. The expected number is at most 8|S|.

More on randomized selection and median finding

Play Episode Listen Later Oct 8, 2010 52:13


During Lecture 7, students learn more on randomized selection and median finding: algorithm and start of analysis.

Fast integer multiplication, randomized selection and median finding

Play Episode Listen Later Oct 6, 2010 48:10


In Lecture 6, Gusfield finishes the discussion of integer multiplication by divide and conquer. He then starts randomized selection and median finding.

Counting inversions; Fast integer multiplication

Play Episode Listen Later Oct 4, 2010 48:11


Lecture 5: Gusfield lectures about counting the number of inversions in a permutation. He introduces fast integer multiplication by divide and conquer.

A more complex recurrence relation and counting inversions

Play Episode Listen Later Oct 1, 2010 52:48


In Lecture 4, students learn about solving a more complex recurrence relation by unwrapping. Gusfield also addresses the problem of counting inversions in a permutation.

Time analysis of Mergesort

Play Episode Listen Later Sep 29, 2010 49:57


In Lecture 3, Gusfield gives the worst-case analysis of MergeSort by setting up a recurrence relation and solving it by unwrapping.

Big-Oh, Omega and Theta notation

Play Episode Listen Later Sep 27, 2010 48:19


In Lecture 2, Gusfield discusses Big-Oh, Omega and Theta notation. He describes Mergesort and Merge and the start of their time analysis.

Introduction to the course and algorithm complexity

Play Episode Listen Later Sep 24, 2010 49:06


This is the course introduction about algorithm complexity, including what "worst case running time" means and how it is measured.

Introduction to the videos

Play Episode Listen Later Sep 23, 2010 2:25


This video shows the URL for printed material that accompanies the course, and a URL for more advanced lectures on material that overlaps and extends the course. The URL for printed course material is: www.cs.ucdavis.edu/~gusfield/itunesU The URL for more advanced lectures is: www.cs.ucdavis.edu/~gusfield/cs222f07/videolist.html

Claim Algorithm Design and Analysis

In order to claim this podcast we'll send an email to with a verification link. Simply click the link and you will be able to edit tags, request a refresh, and other features to take control of your podcast page!

Claim Cancel