Steiner Forest via Primal-Dual
42:21
MaxSat by LP Rounding
37:13
6 ай бұрын
Integer Linear Programming
28:29
8 ай бұрын
Fibonacci Heaps
39:04
9 ай бұрын
Dynamic Program for Rod Cutting
8:54
Пікірлер
@sambenjamin7515
@sambenjamin7515 27 күн бұрын
Cheers
@mayuinc
@mayuinc Ай бұрын
Hey can you guys do a trajectory on an ideal pathway to learning computational geometry, beginning with high school algebra?
@algorithmslab
@algorithmslab Ай бұрын
The main prerequisite is basic knowledge of “algorithms and data structures”, and the prerequisites for that. Prerequisites for “algorithms and data structures” are basic programming skills (language does not matter, it is more about the concepts) and “high-school maths”++. So the pathsway would be: A. Introduction to programming B. Mathematics for Computer Scientists (must include proof techniques & basic probability theory) C. Introduction to Algorithms and Data structures And now you should be set. The more exposure you had to algorithms & basic maths, the easier it should be, but in principle the above should be sufficient. A and B are independent of each other, and may be known partially from school. “Mathematics for Computer Scientists” is of course a bit vague, but a solid mathematical foundation is crucial for algorithms. And sometimes a basic maths course for computer scientists does not yet include probability theory, so it might be necessary to learn that separately. All of the above are standard first-year courses in a computer science curriculum, so you will find plenty of excellent online resources. For Algorithms and Data Structures I also have videos, but there are also excellent MOOCs, e.g. from Princeton and Stanford. Finally, I do have a video where I list prerequisites for my advances algorithms course: kzfaq.info/get/bejne/pdOjpZBmmtSrZ6c.htmlsi=bwRs7wCMCA-8ZWgb I think this comes quite close to what I would expect for computational geometry.
@mayuinc
@mayuinc Ай бұрын
@@algorithmslab thank you so much!
@SupanthaPandit-xs6lf
@SupanthaPandit-xs6lf Ай бұрын
This is a great playlist. I love all your videos. Please share the playlist slides so I can adopt them in my course.
@algorithmslab
@algorithmslab Ай бұрын
I switched to a different set of slides a while ago, and don't have these lying around anymore. If you send me an e-mail (to my TU Dortmund address), I could see whether I can help you with a different slide set (also based on the Cormen et al.)
@SupanthaPandit-xs6lf
@SupanthaPandit-xs6lf Ай бұрын
Can you please provide the slides?
@algorithmslab
@algorithmslab Ай бұрын
the slides are the second half of the following: github.com/kbuchin/slide-archive/blob/main/advanced-algorithms-2024/02-Amortized-Analysis.pdf
@user-nw9ch3zi9d
@user-nw9ch3zi9d Ай бұрын
Professor, I was not able to understand how did you write the horizontal line segment comparison in status comparator as in the book (computational geometry algorithms and applications) on p. 26 it is written that horizontal line segments must be placed last, I am not sure how does your code work. But it works correctly as I have seen in my points test cases. Thanks and Regards
@algorithmslab
@algorithmslab Ай бұрын
In the video I just gloss over this, so I assume you are referring to the Jupyter notebook. The comparator class there unfortunately turned out rather complicated, since it has to handle quite a few edge cases to make the code reasonable robust. The horizontal line segments are handled in the last two cases in the method "_check_special_cases". There one can see that a segment comes later in the comparison, when the y-coordinates of the two end points are (nearly) the same and the other segment is not to the right of the event point. The latter is necessary, because (as is written in the book) "If there is a horizontal segment, it comes last among all segments containing p".
@user-nw9ch3zi9d
@user-nw9ch3zi9d Ай бұрын
@@algorithmslab yes proffesor I understood and wrote the code, it works. I wrote the code in cpp and it is really fast it takes about 1 second for brute force for 10000 segments. it is a lovely code you wrote. Thanks and Regards
@algorithmslab
@algorithmslab Ай бұрын
@@user-nw9ch3zi9d great to hear, thanks! (And the code was written by the other author of the notebook, so I will pass on the compliment)
@ShiyuLi-fh2ss
@ShiyuLi-fh2ss Ай бұрын
Very amazing! Before seeing the video, I could not get the physical meaning of the dual variables of the LP. The visualization is fantastic! The whole lecture is clear and inspired.
@algorithmslab
@algorithmslab Ай бұрын
Thank you! Happy to hear this.
@baddie3982
@baddie3982 2 ай бұрын
to the point and concise, really helpful. thanks!!
@martablank8514
@martablank8514 2 ай бұрын
Thank you so much for this video!
@DanielWood
@DanielWood 2 ай бұрын
Excellent video, really well explained, with clear examples. Thank you.
@ultramelon3960
@ultramelon3960 2 ай бұрын
SOO helpful! thanks!
@algorithmslab
@algorithmslab 2 ай бұрын
great to hear, thanks!
@evitaemort
@evitaemort 2 ай бұрын
Servus
@algorithmslab
@algorithmslab 2 ай бұрын
Glück auf
@ShivangSharma-ih9yg
@ShivangSharma-ih9yg 3 ай бұрын
sir I very very love u 😘😘
@algorithmslab
@algorithmslab 3 ай бұрын
Happy to hear that the videos are helpful!
@fatinsadab3821
@fatinsadab3821 3 ай бұрын
very good explanation. thank u sir
@fndTenorio
@fndTenorio 3 ай бұрын
Very good presentation, thanks!
@dmytrodieiev9338
@dmytrodieiev9338 3 ай бұрын
But wait, how did you fix the RB properties at 17:56, if #5 is violated? "For each node, all paths from the node to descendant leaves contain the same number of black nodes".
@algorithmslab
@algorithmslab 3 ай бұрын
The important observation here, is that #5 is actually never violated (i.e. assuming it holds at the beginning, all operations that we do don't break it). When inserting a new node, we make it red. So assuming that I had a correct tree before, the only violation that I now might have is one red child-parent pair. This is fixed in "Step 3". For all operations in Step 3 it is quite clear that they don't introduce a violation of #5. Only for the last rotation (the right rotation on the slide) we have to be careful. There we recolor z and b. But I explain, starting at 17:18, why property #5 still holds, assuming it was true before. So in short, the recoloring of z and b is what we do to make sure that #5 is not violated. I hope this answers the question.
@sunandachowdhury1455
@sunandachowdhury1455 3 ай бұрын
Can you kindly explain how the potential difference in case of linking in -c??
@algorithmslab
@algorithmslab 3 ай бұрын
Linking means that I take one of the trees and make it a subtree of another tree by connecting it via an edge to the root of that tree. That means that by linking the number of trees goes down by one. So if the number of trees before linking is some number k, it is k-1 after linking. The potential is c* number of trees. So before linking the potential was c*k, and after the linking it is c*(k-1) = c*k - c. The change in potential is therefore (c*k - c) - c*k = - c.
@sunandachowdhury1455
@sunandachowdhury1455 3 ай бұрын
@@algorithmslab Thanks!
@j-p-d-e-v
@j-p-d-e-v 3 ай бұрын
Even though I dont understand some of the terms you use (its me on since Im not that good in DSA) but as a whole I like the way you explain things. Im currently studying DSA.
@algorithmslab
@algorithmslab 3 ай бұрын
Thanks! This video is part of a series, and it is probably a good idea to first watch the video that introduces binary search trees (kzfaq.info/get/bejne/p696dtKSudishn0.htmlsi=N-9x-yNDKw8VcHmi) Success with studying Data Structures and Algorithms!
@ahmad-koye
@ahmad-koye 3 ай бұрын
Thank you😊 ❤
@jermelwatson9399
@jermelwatson9399 3 ай бұрын
Best explanation I got from my 1hr of searching!!!
@offswitcher3159
@offswitcher3159 3 ай бұрын
Great video!
@user-hg4fs2ik5c
@user-hg4fs2ik5c 4 ай бұрын
2024 & you're still helping TU/e students! Thanks!
@soumyachakraborty
@soumyachakraborty 4 ай бұрын
Can we get the pdfs of the slids? Just like the Data Structure once
@algorithmslab
@algorithmslab 4 ай бұрын
okay, I didn't really have a good place to point at, but this should work for now: github.com/kbuchin/slide-archive
@soumyachakraborty
@soumyachakraborty 4 ай бұрын
@@algorithmslab Thank a lot sir!!
@soumyachakraborty
@soumyachakraborty 4 ай бұрын
Your ways of teaching as well as the slides are absolutely awesome. If I get your slides PDF available, it would enlighten me a lot!!
@algorithmslab
@algorithmslab 4 ай бұрын
Thanks! In the video description there is a link to the copy of the course (canvas.instructure.com/courses/3752774). It also contains the slides; for each unit, the slides are in the unit summary at the start of the unit. As a direct link to this slide set, the following should work: canvas.instructure.com/files/158068175/download?download_frd=1
@oguzcetin349
@oguzcetin349 4 ай бұрын
My analysis of algorithm teacher directly use your pdf to teach us.NO JOKE
@algorithmslab
@algorithmslab 4 ай бұрын
That's great to hear! It is great to see that they are being used, just like I am happy that people find this videos useful. I also like reusing slides from colleagues.
@FlashTheMusik
@FlashTheMusik 4 ай бұрын
Thanks for the video! I was wondering for the Min cut - Max Flow LP why the Cut that was displayed in 40:21 did not look minimal to me. The edges that are cut (in the original graph in 29:47) have a summed up cost of 12 whereas cutting away the vertices so the new connected components are {o, a} and {b, c, d, e, n} would have a min cut cost of 4 which is equal to the max flow of the network. Did I miss something in the example?
@algorithmslab
@algorithmslab 4 ай бұрын
It does not look minimal, because it is not minimal. In the video (at 40:21), I just wanted to show a cut to demonstrate the constraints; it was not intended to be minimal (sorry, if that wasn't clear). The cut fulfills the constraints of the ILP (if setting at least y_{2,5}=1, y_{4,5}=1 and y_{3,6} = 1) , but its objective value is 5 (= 1 + 2 + 2). Indeed, setting u_0=0 and u_2=0 and all other u_i=1, corresponds to the cut {o,a} and {b,c,d,e,n}, which results in an objective value of 4. Just one more remark about my cut, which was actually not intentional but is okay: it has the edge from 6 to 4, where we now go from a "1" to a "0". But that is okay since 0 - (-1) = 1 >= 0. I hope this clarifies the example and answers your question!
@FlashTheMusik
@FlashTheMusik 4 ай бұрын
Yeah that clears things up! Thanks for taking the time to write such an elaborate answer!@@algorithmslab
@stevenshi9012
@stevenshi9012 4 ай бұрын
thank you for making this video, it really helped me to understand the proof behind the steiner tree approximation algo!
@scuraballthetrueone
@scuraballthetrueone 4 ай бұрын
First!
@FlashTheMusik
@FlashTheMusik 4 ай бұрын
Thank you so much for putting this series online! I'm rewatching this for my advanced algorithms class and it's so helpful!
@roopamtaneja
@roopamtaneja 4 ай бұрын
Love the explanation for dynamic tables accounting method
@algorithmslab
@algorithmslab 4 ай бұрын
Happy to hear this, thanks!
@FedaHz
@FedaHz 4 ай бұрын
Thank you so much. You covered almost half of my semester in only one video. Although I still haven't comprehended the proofs quite clearly but at least I know where to look.
@algorithmslab
@algorithmslab 4 ай бұрын
Great to hear that it's helpful! This video covers parts of three chapters from the Vazirani book (13,14,15), so I fully see how this could be spread out over several lectures. My aim here was to give a first overview of LP-based techniques for approximation algorithms.
@ascyrax8507
@ascyrax8507 5 ай бұрын
awesome vid :)
@user-zj9pq5xc7x
@user-zj9pq5xc7x 5 ай бұрын
amazing lecture. learnt so much in just 45 minutes. thank you
@algorithmslab
@algorithmslab 5 ай бұрын
That's great to hear!
@user-uy1sl4sk3f
@user-uy1sl4sk3f 5 ай бұрын
Could you please give me an idea, how the base-3 counter amortized cost will be calculated here? I am getting, Ci = 2, Potential change = 2. So, amortized cost = 4. Is it okay?
@algorithmslab
@algorithmslab 5 ай бұрын
This doesn't quite work, because Ci might not be constant. The first question you need to do is to define an appropriate potential function. For the binary counter it was the number of 1s, but here it has to look different (Hint: It has to involve the number of 2s. It can also involve the number of 1s.) c_i is the actual cost. Just like for the binary counter, this may vary, i.e., it is not necessarily constant. The trick then is (again like for the binary counter) to make sure to have defined the potential function in such a way, that whenever the counter has to change many digits, that then the potential drops by a similar number. This is a nice exercise.
@user-uy1sl4sk3f
@user-uy1sl4sk3f 5 ай бұрын
Thanks!
@Michael-cq7ze
@Michael-cq7ze 5 ай бұрын
Thanks a lot for this video, very well explained and easy to follow. It helped me a lot!
@user-uy1sl4sk3f
@user-uy1sl4sk3f 5 ай бұрын
Thanks a bunch!
@nicksonmakama
@nicksonmakama 6 ай бұрын
Thank you Prof. I only wish that for just that are just starting now, some code be shown and explained so we’d have a glimpse of how to actually mod this in code
@algorithmslab
@algorithmslab 6 ай бұрын
We are working on a collection of Jupyter notebooks for the algorithms presented in the videos. I nice feature is that they don't just provide the code but also lets you visually explore the algorithms step by step. The repository is here: github.com/ls11ae/geoalg-notebooks Specifically, for line segment intersection the notebook is here: nbviewer.org/github/ls11ae/geoalg-notebooks/blob/master/notebooks/02-LineSegmentIntersection.ipynb To modify it and to use the interactive elements, you can use binder (and wait a bit) or simply download the repo.
@gawadahmed3722
@gawadahmed3722 6 ай бұрын
you are a legend!
@hakan6449
@hakan6449 6 ай бұрын
This video is proof that you don't need a 50 minute MIT lecture to teach something so simple!
@jaden520
@jaden520 6 ай бұрын
Promo`SM
@thaynaemillycavalcantesant3687
@thaynaemillycavalcantesant3687 6 ай бұрын
Great lecture. Thank you!
@algorithmslab
@algorithmslab 6 ай бұрын
Happy to hear, thanks!
@daydreamer1722
@daydreamer1722 6 ай бұрын
underrated channel, helps me a lot
@algorithmslab
@algorithmslab 6 ай бұрын
Great to hear!
@NoOne-jl2ii
@NoOne-jl2ii 6 ай бұрын
Thanks a lot!!
@NoOne-jl2ii
@NoOne-jl2ii 6 ай бұрын
Thanks for the video! Keep up the good work.
@algorithmslab
@algorithmslab 6 ай бұрын
Thanks for commenting!
@halalgunna1023
@halalgunna1023 7 ай бұрын
this is slept on. what a fantastic explanation. you're the man!
@algorithmslab
@algorithmslab 7 ай бұрын
great to hear, thanks!
@user-jz8fp3su7c
@user-jz8fp3su7c 7 ай бұрын
Thank you, it is a detailed explnation
@kingnavidplays3886
@kingnavidplays3886 7 ай бұрын
Completely WRONG! You forgot to multiply i to Prob(#prob>i) in expectation formula!
@algorithmslab
@algorithmslab 7 ай бұрын
I am not completely sure, whether I understand your comment correctly, but there is no factor i in the sum(Prob(#prob>i)). This corresponds to the sum at the bottom at 01:55, see e.g. also Theorem 1 here: www.cs.princeton.edu/courses/archive/fall02/cs341/lec22.pdf .
@da60511
@da60511 7 ай бұрын
why c_i of the insert is 1 + "k"? do these k trees do any operation?
@algorithmslab
@algorithmslab 7 ай бұрын
I assume you are referring to approx. timestamp 14:00? Insert creates a tree of size 1, and then takes the union of this tree with the trees of the previous heap. Now, for instance, lets assume we are inserting the 8th element. Then the previous binomial heap had 7 elements, and consisted of a tree of size 1, a tree of size 2, and a tree of size 4. Insert will now link the new tree of size 1 with the existing heap of size one, resulting in a tree of size 2. Because there is already a tree of size 2, we link this with the existing tree of size 2, resulting in a tree of size 4. This we link with the existing tree of size 4, finally getting a tree of size 8. Here is a cute animation of this process: www.chrislaux.com/binomialheap Thus, for each of the trees that we "iterate through", we do one link operation. Link operations take constant time. So, this contributes O(k) to the actual cost, and this is captured by the "+k" in c_i. Does that answer your question?
@da60511
@da60511 7 ай бұрын
@@algorithmslab Yes you answered my question. Thank you very much ! I finally understand 😊
@da60511
@da60511 7 ай бұрын
thanks a lot save me for my algo exam
@algorithmslab
@algorithmslab 7 ай бұрын
Thanks for your comment, happy to hear this!
@hummingbird5964
@hummingbird5964 8 ай бұрын
Number of links are three number of joints are 2 3(n-1)- 2J1 3(3-1)-2(2) 2 Axxording to gruebler;s formula that first link is fixed though