Convex Hull Algorithm - Graham Scan and Jarvis March tutorial

Поделиться
HTML-код
  • Опубликовано: 11 дек 2024

Комментарии • 179

  • @anigorgorian1606
    @anigorgorian1606 4 года назад +167

    Both Jarvis March and Graham Scan algorithms are very well explained. Amazingly, in less that 8 minutes! Thanks and keep up the good work!

    • @stablesort
      @stablesort  4 года назад +5

      Thanks, will do!

    • @fizipcfx
      @fizipcfx 25 дней назад

      how come the name of these algorithms are so cool

  • @Mrfredondieki
    @Mrfredondieki 4 года назад +52

    This is by far the best explanation on Jarvis and Graham scan algorithm yet precise

    • @stablesort
      @stablesort  4 года назад +3

      Thanks for the good word!

  • @EvanMilliken
    @EvanMilliken 2 месяца назад +4

    The best possible explanation of both algorithms; The clear and exact visual representation of the processes, made it easier to understand. The explanation was quite precise and to the point.

  • @kingrajput6202
    @kingrajput6202 3 года назад +14

    i watched my professors recording of about an hour just for graham scan and still didn't understand a single thing and this good sir here taught me both algorithms in 7 minutes , respect

    • @Tilakraj494
      @Tilakraj494 3 года назад +2

      Same bro. i have exam tomorrow and i watched my class lecture but i couldn't understand.

    • @stablesort
      @stablesort  3 года назад +4

      Glad to know that the video was helpful!

    • @raghavamorusupalli7557
      @raghavamorusupalli7557 11 месяцев назад

      For all of you guys, classroom teachers are idiots.

  • @abhishekkangane2386
    @abhishekkangane2386 Год назад +3

    Nice Explanation of convex hull & its algorithms, till now I seen.
    Thank you🙏

  • @krayush9249
    @krayush9249 3 года назад +8

    This is the best explaination of Graham Scan algorithm on youtube. Thanks a lot!

    • @stablesort
      @stablesort  3 года назад +1

      Thanks for the compliment!

  • @gargnakshatra
    @gargnakshatra 2 года назад +5

    A big big thanks to you for explaining it in such a simple way. Didn't think it'd be this simple. Thank You!

  • @jataman123
    @jataman123 Год назад +1

    Wel done! Your videos are the clearest explanations of the big picture of every algorithm. They are kept simple but complete and without understatements.

  • @rajneeshverma4026
    @rajneeshverma4026 4 года назад +15

    one of the best channel, explanation is simple and precise.

  • @hadung8484
    @hadung8484 2 года назад +1

    I found this channel a few months ago and was stunned. Everything is well-explained, much better than in my classes. I've learned a lot. Thank you so much!!!

    • @stablesort
      @stablesort  2 года назад

      Thanks for the good word!

  • @parthodasporag9885
    @parthodasporag9885 2 года назад

    Great Video! It makes my time save from boring 1 hour lecture of my university professor.

  • @highruler2786
    @highruler2786 4 года назад +2

    Intresting. Looks like Convex Hulls aren't as complicated to find as I thought. Well explained! I'll give implementing the Graham Scan algorithm a shot.

    • @stablesort
      @stablesort  4 года назад +2

      Yeah, both Graham and Jarvis algorithms are not that complicated. But to make sure that various collinear points are handled correctly, I had to create a whole battery of test cases (same directory as the main source code: bitbucket.org/StableSort/play/src/master/src/com/stablesort/convexhull/ConvexHullTest.java). I hope this helps!

    • @highruler2786
      @highruler2786 4 года назад +1

      @@stablesort Thanks for the reply! I'll try to make sure that the collinear points are handled correctly. As for test cases, I mostly solve programming problems on Kattis. See open.kattis.com/problems/convexhull
      Speaking of which, lets say that you already know which points are one the convex hull and not. How would you go about finding the order the points appear on the hull? Wouldn't you just have to make the convex hull again, including all collinear points while excluding points inside the hull, and record them along the way? See open.kattis.com/problems/convexhull2 if you're interested.

    • @stablesort
      @stablesort  4 года назад +1

      ​@@highruler2786 Thanks for link. That website seems to have a rich set of interesting problems.
      Rerunning the algorithm on just the vertex points will certainly work. But I wonder if there is a more efficient way to ordering the points, given that we are guaranteed that they are valid vertices? I guess we can just use the sort() method from Graham Scan, with a total running time O(h log h), h=number of vertices. Is there a more efficient solution?

  • @yeyuksel
    @yeyuksel 4 года назад +2

    Here is really need to have people who do their job with their best effort like you.

  • @maridavies3425
    @maridavies3425 4 года назад +4

    Cool video. There are applications for applying convex hull algorithms to self-driving cars - trying to learn about it! Thanks for the helpful demonstration.

    • @stablesort
      @stablesort  4 года назад +1

      Glad it was helpful! Both Graham Scan and Jarvis March could be used to calculate the Convex Hull just for image classification purposes. Especially since the number of points involved isn't huge. Self-driving cars want to quickly classify an object and roll with it.

  • @mathisawesome618
    @mathisawesome618 4 года назад +3

    What an incredibly good explanation, you really thought about which segments of the explanation are harder to understand and explained them really well, thank you so much for the video!

    • @stablesort
      @stablesort  4 года назад +2

      Thank you for such a wonderful compliment! I tried implementing the algorithms and then explained the sections that I myself found harder to deal with. Glad to hear that you found it helpful =)

  • @shivangisharma9452
    @shivangisharma9452 10 месяцев назад

    THANKYOU for explaining something so complex in such simple words.

  • @tianrungou6486
    @tianrungou6486 2 года назад +1

    this is so much better than my professor, I believe all professor should use animation for visualization of algorithms just like you did!

  • @AbhinavRawal
    @AbhinavRawal 3 года назад +1

    This is the best explanation i could find on the internet 👏

  • @viz_dugz
    @viz_dugz 3 года назад

    By far the best explanation of these two algorithms.

  • @deniskhakimov
    @deniskhakimov 2 года назад

    So far, this is the best explanation of the algorithm I've seen!

  • @kiwichi4488
    @kiwichi4488 3 года назад +1

    Thank you, I love teachers like you. Amazing

    • @stablesort
      @stablesort  3 года назад

      Thank you for the good words!

  • @arivarasum
    @arivarasum 2 года назад

    wonderful explanation of 2 algos in mins.

  • @shanewalsch
    @shanewalsch Год назад +1

    Thanks a lot. Needed to implement Graham Scan algorithm for Computer Science home work

  • @RomuloMagalhaesAutoTOPO
    @RomuloMagalhaesAutoTOPO Месяц назад

    Clear like crystal.

  • @chetanraikwar3546
    @chetanraikwar3546 2 года назад +1

    I can guarantee this was the best ever explanation of this Algorithms.
    When will you make more videos ?
    If possible, make such videos on all Algorithms from CLRS book, sequentially. 😇

  • @whitest_kyle
    @whitest_kyle 3 года назад +1

    Super simple explanation, thank you!

  • @RandomGuyPlay
    @RandomGuyPlay 4 года назад +1

    Incredible how you can explain these fairly complex subjects with such simplicity. I am glad that I found your channel! Very good content.

    • @stablesort
      @stablesort  4 года назад +1

      Thanks for such a wonderful compliment!

  • @annashchukina3768
    @annashchukina3768 Год назад +1

    thank you. clearly explained

  • @douglasemsantos
    @douglasemsantos 3 года назад +1

    Great explanation! Thank you very much!

    • @stablesort
      @stablesort  3 года назад +1

      You are very welcome! And thanks for the compliment!

  • @tushargupta3236
    @tushargupta3236 3 года назад +1

    Amazing explanation !

  • @ankurjakhar980
    @ankurjakhar980 3 года назад +1

    Most clear explanation ! Thanks a lot

  • @sceuderia
    @sceuderia Год назад

    Please make video on Chan's algorithm. Your videos & explanations are very good & concise.

  • @beypazariofficial
    @beypazariofficial 3 года назад +1

    I recommend you to put subtitles to each video so nonnative speakers can understand in a better way. thank you for the video, my teacher used it in his lecture for teaching us this algorithm.

    • @stablesort
      @stablesort  3 года назад

      Ha! That's wonderful to hear! By the way, I believe that RUclips automatically creates subtitles in various languages. You just have to click on CC button. Cheers!

    • @beypazariofficial
      @beypazariofficial 3 года назад

      @@stablesort thank you for your answer, i like your channel and what you are doing on youtube, but sometimes automatic subtitles are struggling with wrong word conversions.

    • @stablesort
      @stablesort  3 года назад

      @@beypazariofficial Right, right, I just hope that the auto-translation improves with time. Thanks for your feedback, I do appreciate it

  • @gamifycoding8927
    @gamifycoding8927 3 года назад +1

    I would like to know the further explanation of this in your channel ... Very easy and simple understanding Sir

  • @pielatsch9959
    @pielatsch9959 3 года назад +1

    Very well explained in very efficient matter! Thanks a lot!

    • @stablesort
      @stablesort  3 года назад

      You are very welcome and thanks for the compliment!

  • @theworldismyhome9888
    @theworldismyhome9888 3 года назад +1

    Extremely well explained... Gonna share ..

    • @stablesort
      @stablesort  3 года назад

      Woohoo! That's what I like to hear! Thanks!

  • @shafayettuhin3963
    @shafayettuhin3963 2 года назад

    Thank you sir ... One of the explained vedio of this topic i have seen so far

  • @kAreezArsalan
    @kAreezArsalan 3 года назад +1

    Such a great video. Purely recommended.
    Appreciated!!
    👏

  • @Novello42
    @Novello42 3 года назад

    Great explanation!
    Found a bug though :P
    At 4:38 when we handle collinear points in a vertical line, we should treat the order of these points differently.
    For points like this shape ▛ , [[0, 0], [0, 1], [0, 2], [1, 2]]
    [0, 0] is the P0, in the above shape, the vertical line contains [0, 0], [0, 1], [0, 2] , here [0, 1] > [0, 2], which is the same with the video.
    But there's another case: ▜ , [[0, 0], [0, 1], [0, 2], [-1, 2]]
    [0, 0] is also the P0, but in this case we scan the vertical line first, and here we need to put [0, 1] before [0, 2] which means [0, 1] < [0, 2].

    • @stablesort
      @stablesort  3 года назад

      Thanks for the discussion. I think the exact implementation matters quite a lot for the corner cases. Have you tried out the source code linked in the description? I could be wrong but I think I tried that type of a corner case at some point.

    • @Novello42
      @Novello42 3 года назад +1

      ​@@stablesort Yep, the source code impl is consistent with your video. it's really tricky to deal with the collinear issue here, so chose Monotone Chain, lol.
      anyway, thank you for the clear explanation.

    • @stablesort
      @stablesort  3 года назад

      @@Novello42 Thanks! Glad to hear that it was helpful.

  • @broccoli322
    @broccoli322 2 года назад +1

    Great video! Thanks for the explanation.

  • @sebastian-daquanglocknerjr1883
    @sebastian-daquanglocknerjr1883 4 года назад +2

    what an amazing video for this topic.

    • @stablesort
      @stablesort  4 года назад

      Thanks for the compliment!

  • @monikast6964
    @monikast6964 Год назад +1

    Excellent explanation

  • @julfikarali5555
    @julfikarali5555 2 года назад +1

    Such a great video and very well explained. Thanks a lot.

  • @princess8486
    @princess8486 3 года назад +6

    Excellent explanation.. May Allah bless you for making this algorithms so easy to understand... please continue to make more videos

    • @stablesort
      @stablesort  3 года назад +1

      Glad to hear that you liked it!

  • @ketakikavi6610
    @ketakikavi6610 3 года назад +1

    Very nice video!! I was very confused in these both cousins but this video made it understand. Please explain the "n log n" algorithm also it would be helpful as this video did. Thank you and keep it up!

    • @stablesort
      @stablesort  3 года назад +1

      Thanks for the compliment! The Graham Scan algorithm works in "n log n", due to the sorting of the points. The "n log h" algorithm, where h is the number of vertices, as developed by T. M. Chan, is on my list of topics to cover if there is enough interest out there. Thank you for casting a vote to have that topic covered. I believe you are the third person to ask for it =)

  • @jaivishavbhaskar7776
    @jaivishavbhaskar7776 27 дней назад

    very beautifully explained.

  • @SunilKumarGvBLC
    @SunilKumarGvBLC 3 года назад +2

    Most underrated video!!! Like to dislike ratio of 477:1...best

    • @stablesort
      @stablesort  3 года назад

      Thanks for the compliment!

  • @ananyapamde4514
    @ananyapamde4514 3 года назад +1

    This was soooo awesome!!!! You explained it soo well!

    • @stablesort
      @stablesort  3 года назад

      Thanks for the compliment! Glad to hear that it made sense

  • @virtualkirinuki
    @virtualkirinuki Год назад

    Thank you for great descriptions!

  • @alwaysSleepyBear26
    @alwaysSleepyBear26 4 года назад +1

    you have explained explained beautifully. Gained one subscriber👍

    • @stablesort
      @stablesort  4 года назад

      Welcome and thanks for the compliment!

  • @sciencewithali4916
    @sciencewithali4916 Год назад

    Very intiuitive and well explained ! Thank you very much professor !

  • @diwakargupta0
    @diwakargupta0 3 года назад +1

    awesome explanation

  • @alter.wvlcolm
    @alter.wvlcolm 2 года назад +1

    great explanation

  • @onurcanisler
    @onurcanisler 3 года назад +1

    *HATS OFF, SIR!*

  • @kvk812
    @kvk812 8 месяцев назад

    amazing video. great explanation. keep going!

  • @baviskarakshay
    @baviskarakshay 4 года назад +3

    Thanks a lot! This is really great. Please make the episode on n logh algo as well. 🙏

    • @stablesort
      @stablesort  4 года назад

      Cool, thanks for the compliment. You are the first person to mention the "n log n" solution! I guess it took 473 views for someone to watch through the end of the video =) I am not sure when I'll have the time to make a video about that algorithm (I am currently in the process of making a couple of videos on a totally different topic) so for the current time being, please see Chan's paper that describes the algorithm
      link.springer.com/content/pdf/10.1007/BF02712873.pdf
      Or the wiki: en.wikipedia.org/wiki/Chan%27s_algorithm

    • @akshaybaviskar3875
      @akshaybaviskar3875 4 года назад +1

      @@stablesort Thanks for the links :)
      Waiting for more from your channel!!!

  • @kartikbhatia4940
    @kartikbhatia4940 4 года назад +1

    You deserve more subscribers ! Kudos

    • @stablesort
      @stablesort  4 года назад

      Thanks! Hopefully with time the word will get around =)

  • @akshaykumardayma2620
    @akshaykumardayma2620 4 года назад +1

    awesome explanation ,good job man

  • @원종찬-v8l
    @원종찬-v8l Год назад

    It just so simple algorithm also very powerful.. I just surprised. Thanks a lot!

  • @shubhamgoswami3722
    @shubhamgoswami3722 4 года назад +1

    Great explanation 👍

  • @Gabriel-wq4ln
    @Gabriel-wq4ln Год назад +1

    I have a question in 6:00 (about Jarvis march running time). Why would the case of all points being in the perimeter be slower than a triangle surrounding all the other points? Doesn't the algorithm check all the points in every iteration, no matter what?

    • @coder1235
      @coder1235 Месяц назад

      No, it will do less iterations of searching for the next point. It stops when it gets back to the first point

  • @notout291
    @notout291 3 года назад

    Sir, amazing work keep it up!!!!!!!!!!!!

  • @AmitSingh-nr8jz
    @AmitSingh-nr8jz 3 года назад +1

    well explained

  • @tsvetomirgalabov110
    @tsvetomirgalabov110 4 года назад +1

    AWESOME VIDEOS THANK YOU!

    • @stablesort
      @stablesort  4 года назад

      You are very welcome! Cheers!

  • @mr.arikodus7527
    @mr.arikodus7527 Год назад

    One of the best videos I've watched on algorithms, thanks a lot. I have a question regarding to Jarvis March algorithm, in the video you mentioned that h is the number of vertices but I thought it should be the number of corners.

  • @kBilalAsim
    @kBilalAsim 4 года назад +1

    excellent sir

  • @learnhome9659
    @learnhome9659 3 года назад +1

    Great Explanation ever, Could you please come up and Explain Timothy Chan's Algo

    • @stablesort
      @stablesort  3 года назад

      Thanks for the compliment and thank you for casting a vote regarding Chan's algorithm. I am keeping track of all of the requests. Cheers!

  • @rikardez
    @rikardez 2 месяца назад

    Que gran explicación muy fácil de entender

  • @satvikparashar9908
    @satvikparashar9908 Год назад

    Great video. Can you also please explain the method by Timothy Chan?

  • @waltwhitman7545
    @waltwhitman7545 2 года назад

    it's also very important in thermodynamics for Gibbs energy

  • @snesh93
    @snesh93 3 года назад +1

    By sorting the points, did you mean with respect to x coordinate or why coordinate ? , considering only 2D set of points.

    • @stablesort
      @stablesort  3 года назад

      In my examples I sorted by Y coordinate, so as to start at the bottom most point. But obviously this is just a convention - you can do it via the X coordinate just as well. Thanks for posting the question!

  • @bravesingh1677
    @bravesingh1677 Год назад

    wow what an explanation

  • @puneetkumarsingh1484
    @puneetkumarsingh1484 3 года назад +1

    Will you be doing a video of Convex Hull in three dimensions (E^3) as mentioned in Chan's paper?

    • @stablesort
      @stablesort  3 года назад

      Thanks for the suggestion, that's a good idea! Truthfully though, if I were to revisit this topic, I'd just explain Chan's method of selecting two polygons, then connecting them up into a single polygon and how that ends up being faster in some circumstances =P

    • @puneetkumarsingh1484
      @puneetkumarsingh1484 3 года назад

      @@stablesort Are you working on something new as of now??

    • @stablesort
      @stablesort  3 года назад

      @@puneetkumarsingh1484 Yeah, I have a couple of topics that I am exploring little by little. The youtube channel is only a hobby for me, so I get to it if/when I have some free time. Speaking of which, I better get to it!

    • @godse54
      @godse54 2 года назад

      No

  • @sohamajgaonkar3119
    @sohamajgaonkar3119 2 года назад

    nicely explained TYSM

  • @oldbootz
    @oldbootz 2 года назад

    Thank you very much!

  • @akshitjain7586
    @akshitjain7586 Год назад

    Great Video.

  • @vibhu613
    @vibhu613 3 года назад +1

    Love you man❤❤💯💯

  • @20aatif
    @20aatif 4 года назад +2

    wow You are awesome!

    • @stablesort
      @stablesort  4 года назад +1

      Thanks for the compliment! More episodes are in the making. Stay tuned!

  • @yt-lu
    @yt-lu 3 года назад

    4:26 The slope along 3-4-5-6 is vertical, but should we still sort them downward?

    • @stablesort
      @stablesort  3 года назад

      Well, you could implement it differently than as suggested. But it is a little tricky, so make sure to test your code really really extensively. What I found was that it's easiest to sort the vertical points going downward. Here is my source code:
      bitbucket.org/StableSort/play/src/master/src/com/stablesort/convexhull/ConvexHullGrahamScan.java

    • @yt-lu
      @yt-lu 3 года назад

      @@stablesort Thank you so much for the prompt response! Your code does explain that clearly. Do you have a plan to make a video interpreting Timothy Chan's work in the near future? I really look forward to that if you do!

    • @stablesort
      @stablesort  3 года назад

      @@yt-lu To be honest, while T. Chan's algorithm is IMHO quite beautiful, it's not on the top of the list, but only because out of over 10K views that this video has received, there were only 3 requests for Chan's algorithm... So for the near future, I plan to spend the little of free time that I have on topics that may prove to be of more interest to greater number of viewers. By the way, if you have other topic suggestions, please do let me know! Cheers!

  • @dickybear
    @dickybear 3 года назад +1

    inspiring!

  • @dongjunlee7246
    @dongjunlee7246 4 года назад +1

    Very good

  • @learnhome9659
    @learnhome9659 3 года назад +1

    Can you suggest some problems/algorithms on which further research can be done to optimise it. Looking forward to pursue some research in Computational Geometry

    • @stablesort
      @stablesort  3 года назад

      Thanks for leaving a comment. The only one that I am aware of is Chan's algorithm: link.springer.com/content/pdf/10.1007/BF02712873.pdf

  • @AcTheMace
    @AcTheMace 2 года назад +1

    Thanks this is useful. I am implementing several convex hull algorithms in Java right now and I for one would really appreciate a video on the O(n log h) algorithm. If I understand it, I might be able to program it too.
    I'm curious, in your code you have two implementations of the march. One is supposed to be by angle and I think I understand that one, but I don't quite understand the other. Do you see any performance difference between the two?

    • @stablesort
      @stablesort  2 года назад

      There were definitely performance differences. I was actually using one implementation to test the other by generating large numbers of random points and comparing the two. Good luck!

    • @AcTheMace
      @AcTheMace 2 года назад

      @@stablesort Oh okay. Do you remember which algorithms was faster on average?

  • @MonirHossain-gr2nv
    @MonirHossain-gr2nv 2 года назад

    Amazing..never expected in this short time.. Is there any playlist for algorithm only?

  • @SANGROLI2006
    @SANGROLI2006 3 года назад +1

    Please do make a video on Quick hull

    • @stablesort
      @stablesort  3 года назад

      Thanks for casting your vote, I do appreciate it. To be frank, out of almost 9,000 views, there have only been two request for it... While I do want to make a video covering the Quick Hull at some point, I'll probably first do a few other topics before coming back to it. But again, thank you, Madhur Malik for your input.

  • @yaboi8268
    @yaboi8268 Год назад

    Thank You!

  • @theodiscusgaming3909
    @theodiscusgaming3909 3 года назад +1

    How can we sort the points with cross product when the cross product depends on both the length of the vectors and the angle between them? Do we divide the resulting cross product with the lengths of the vectors?

    • @stablesort
      @stablesort  3 года назад

      Thanks for raising the question. It's actually simpler than that. The cross product calculates the signed area formed by the two vectors. The area is positive or negative depending on which side the vectors are in reference to each other. And that's all that we need for sorting: that's the comparator function that you'd supply to the sorting algorithm. By the way, check out the source code linked in the description. I hope this helps!

  • @FantaPopRockz
    @FantaPopRockz Год назад

    Great thanks!

  • @deepthim66
    @deepthim66 2 года назад

    Thanks a lot

  • @rudrOwO
    @rudrOwO 3 года назад +1

    Respect +100

  • @johnstephen8041
    @johnstephen8041 4 года назад

    Wonderful

  • @judgeomega
    @judgeomega 2 года назад

    is the cross product faster than the trig on x86 chips? what about on cuda cores? has anyone benchmarked this with optimizations?

  • @NarainSharma4
    @NarainSharma4 Год назад

    Please explain Timothy algorithm

  • @uipo1122
    @uipo1122 4 года назад +1

    Thanks

  • @Krishnayadav-ln8ru
    @Krishnayadav-ln8ru 3 года назад +1

    pls explain the new algorithm :)

    • @stablesort
      @stablesort  3 года назад

      Thanks for placing a vote! I believe at this point 4 people asked for Chan's algorithm (out of nearly 18K views....)

  • @trendchser9816
    @trendchser9816 8 месяцев назад

    Why didn't we removed 5? In stack

  • @keshavmaheshwari521
    @keshavmaheshwari521 3 года назад

    which wone is better?

    • @stablesort
      @stablesort  3 года назад

      The answer to your question is at 6:01

  • @thangphan5177
    @thangphan5177 3 года назад

    tks u a lot

  • @ShubhamGupta-tv2ft
    @ShubhamGupta-tv2ft 3 года назад

    video was so informative but you had to show how code all that concept one by one. then it will be easy for us

    • @stablesort
      @stablesort  3 года назад +1

      Thanks for the feedback. I try to keep the videos as short as possible, which inevitable results in leaving out some stuff. The good news is that there is a full implementation with comments linked in the description.
      Graham Scan:
      bitbucket.org/StableSort/play/src/master/src/com/stablesort/convexhull/ConvexHullGrahamScan.java
      Jarvis March:
      bitbucket.org/StableSort/play/src/master/src/com/stablesort/convexhull/ConvexHullJarvisMarch.java
      I hope this helps!

  • @gvsunilkumar1078
    @gvsunilkumar1078 4 года назад +1

    The video was =) ......in your style

    • @stablesort
      @stablesort  4 года назад +1

      I hope you found it helpful =)