As a software engineer I enjoy watching these videos. I find them relaxing. You are really good at teaching. Keep up the good work!
@TheCodingTrain8 жыл бұрын
That's so nice to hear thank you!
@insidioso43048 жыл бұрын
Derick Hess Me too! Actually it is relaxing but at the same time it makes you feel the need to code! I would call this new way of relaxing: "prograxing"
@ericowens90506 жыл бұрын
Derick Hess Same here. Makes me feel better to not be alone in that feeling. :-)
@Pradeep.Poonia5 жыл бұрын
@@TheCodingTrain Does Derick look like the guy who wrote this paper : kzbin.info/www/bejne/naC4naymadeqn7c @DerickHess
@amandixit35553 жыл бұрын
@@TheCodingTrain choo choo , abey bada ho ja bhai. choo choo
@clementbuchanan5873 жыл бұрын
Seriously Dan, I luv, luv, luuuv the way you teach. I am a software developer in training and you make it so much more palatable to digest. I truly hope you continue this great work you're doing man. You're my go to resource when I need ANYTHING for coding.
@kevnar3 жыл бұрын
I took the formula for line intersection from your Ray Casting video and I just made the TSP algorithm swap the tails of two random intersecting lines in the path. Then I gave it 999 points, and it unscrambled the path in a matter of ten minutes or so. It's not the shortest path, but the amount of progress for that many points is amazing.
@tiffsea88765 жыл бұрын
I love that you chose to use 'salesperson' as opposed to traditional 'salesman' term - obviously not all sales persons are 'men'. Thank you for thinking at that level! Makes a huge difference for mental processing!
@DodaGarcia2 жыл бұрын
1:10: "Oh a Pokémon Go analogy, this will be easy to follow!" 1:15: "N-dimensional? I'm lost"
@jhokeypokey5 жыл бұрын
I come from the future to let you know that this is still interesting.
@pretzels32735 жыл бұрын
Jared Fairchild and Pokémon go is relevant again
@Seedx4 жыл бұрын
Welp it’s 2020
@t__v_____2904 жыл бұрын
Not anymore buddy
@bechirjamousi66964 жыл бұрын
TSP needs to get back to its initial position and in this case, it is not , am i right?
@jetison3333 жыл бұрын
Further in the future here, can confirm its still interesting
@Lehiannel7 жыл бұрын
Perfect! I am studying it for a project in my R coding class. Your logic explanation was clear, didatic and easy to understand. I enjoyed it :) Keep making videos like that!
@nataliekidd21358 жыл бұрын
I really love these videos, they are super informative. I'm a Sophomore in college earning my degree in Computer Science. Even though I haven't learned Java or JavaScript, I really appreciate these videos.
@bikachu_4 жыл бұрын
you're a great teacher and thanks for being so enthusiastic about programming, it really keeps me going!
@manurok19018 жыл бұрын
Love these videos! Been binge watching while I'm off work the past couple of days :p Keep it up man, you're inspiring
@sherhy36898 жыл бұрын
patient, adequately funny, and informative, please continue this as long as you can --tokyo
@golfball_diver5 жыл бұрын
i know this is late, but i think the travelling salesman problem requires you to go back to your starting location after visiting every city.
@alirizvi7103 жыл бұрын
yeah otherwise its just a minimum spanning tree problem
@themanwiththeplan84042 жыл бұрын
isn't that a hamilton cycle?
@VizGhar2 жыл бұрын
TSP is shortest hamiltonian cycle yes
@nowar92207 жыл бұрын
first channel ive ever subscribed to!! Really worth it :) Thanks! Apreciate it!!
@mihaitmf6 жыл бұрын
Man, that's awesome! So simple, yet so neat.
@Hyuts6 жыл бұрын
I finally downloaded processing! Very cool and easy to install plus allows me to follow along and use all github projects. Thanks!
@ronraisch5107 жыл бұрын
I yelled "SUM!!!" at the screen for like 4 min lol
@sina-qh8wm3 жыл бұрын
I created a presentation in university based on this video, thanks a lot :)
@nraynaud5 жыл бұрын
I used a traveling salesman in a CNC application, when milling a bunch of pockets, to choose the order of the pockets.
@omshrisn29097 жыл бұрын
I like your approach of programming!!! , understood more clearly than what teachers teach in my college thanks 😃
@TheDogn8 жыл бұрын
7:13 The bell was a hilariously unexpected touch.
@per1sher8 жыл бұрын
Fascinating video - always enjoy your channel - your enthusiasm is infectious :)
@heavencanceller18633 жыл бұрын
These videos are both priceless information and entertainment
@Ensii7 жыл бұрын
Your enthusiasm is priceless :) nice video
@TheCodingTrain7 жыл бұрын
Thank you!
@seanhudson84535 жыл бұрын
Came here for my uni course. Stayed for the flamboyancy
@LorenzoLeonardini8 жыл бұрын
"What are the things in your world that you need to find the path way through?" everything in my room I guess
@amateuraaron69722 жыл бұрын
Hey Dan! Just wanted to say its 2022 about 6 years later Pokemon Go is still relevant enough for this video hahaha
@anonymousvevo86974 жыл бұрын
i come from 2020 and your video is still awsome
@kevnar7 жыл бұрын
Sally has 12 boyfriends. In order to keep them from finding out about each other, she insists on having her visits at the guy's houses. What route does she visit them in that saves her the most travel time so she can maximize the time she spends with each guy?
@MrCmon1136 жыл бұрын
Damn, Sally is even worse than Chuck, who's always trying to spy on Alice and Bob.
@Violet-tb8xo5 жыл бұрын
@@MrCmon113 eve?
@kyokarson82335 жыл бұрын
@@MrCmon113 we used to have Darth spying on alice and bob when the love birds wanted to talked :p
@arumifitria54335 жыл бұрын
Thanks u inspired me a lot
@kavinbharathi4 жыл бұрын
_why? Just why?_
@glenneric13 жыл бұрын
I think one way of avoiding the trap that you see at 21:18 is to sometimes swap more than 2 points. Though that actually isn't a two point trap now that I look at it.
@sairamankilambi50074 жыл бұрын
2020 it is! Travelling back in time to understand Travelling Sales Person problem...
@Nerdthagoras7 жыл бұрын
I plan to use this to find the optimal route while shopping for various items at Walmart!
@TheCodingTrain7 жыл бұрын
Haha, look forward to hearing how that goes!
@Thijs-Kuiken5 жыл бұрын
What this video needs is.... more talking with the arms and hands. ;-) interesting stuff! though a lot flies over my head. You're an enthusiastic teacher.. fun watch.
@amit_awadhi3 жыл бұрын
It should be renamed to "Catching-Pokemon-Problem"😂👌
@davidstephen22198 жыл бұрын
Simple and easy as always. Keep go on. I wish I was one of your students in your class. );
@rafageist Жыл бұрын
If you don't have the restriction of returning to the starting city, then you have leftover combinations. A B C would be the same as C B A, and so on.
@omaryahia3 жыл бұрын
your videos are amazing, thank you Daniel
@luiginotcool3 жыл бұрын
Hey I’m from the future and this is actually really useful for solving shwolobatata-hmm problems
@memporium2403 жыл бұрын
You can actually reach an upper bound of n^2*2^n which is a better bound than n factorial.
@sujals71086 жыл бұрын
instead of writing 'bestEver = cities.slice();', you can just write 'bestEver = cities;'. It copies the array exactly
@rankail5 жыл бұрын
He did it that way first and then "corrected" it. XD
@aryamankejriwal59597 жыл бұрын
For the latest thing, the points would be shops where the Nintendo switch is possibly present...
@RetroGamingClashOfClans7 жыл бұрын
traveling salesman problem is one of the hardest problem in math having no exact method/equation for finding the EXACT shortest route and its is one of the NP problems.... if you can find a quick way to solve this problem for any number of points, it will proof that P = NP and that will get you million dollars as it is one of the 1million$ millennium problem
@tythedev95823 жыл бұрын
I am a simple man. I see your videos in my recommendations. I watch. LMBO @16:11 "shmoley-patat-in"?
@aryamankejriwal59597 жыл бұрын
22:21 The bell makes a sound, or you might understand it better as follows: class Bell{ static void makeSound(){ System.out.println("Ding"); } }
@josbex16847 жыл бұрын
Interesante gracias... aplicare ahora la heuristica anneling para calcular mas rápido la ruta mas corta
@deathvall3y5 жыл бұрын
Energetic.... and lots of love for you
@exorcistgg98336 жыл бұрын
lol I was trying to design a program that calculate the shortest distance to go to all pokestop😂 And then I found your vid
@quicksanddiver8 жыл бұрын
Pokemon Go was actually the real reason I got interested in this problem... ^^'
@cesarrios34497 жыл бұрын
Where are u programming this? Are you using an text editor or something else? I would appreciate so much if u can answer me. Excelent video, greetings from Mexico :)
@TheCodingTrain7 жыл бұрын
Try some of these workflow videos! (let me know if they are helpful) sublime text: kzbin.info/www/bejne/i3Srq5-Lnql3Z5I atom editor: kzbin.info/www/bejne/mmSylHmbrcpsf80 brackets: kzbin.info/www/bejne/pJ69k5uDltOJmbs codepen: kzbin.info/www/bejne/a5jJhpqEpbhpobs
@MikaelWallgren6 жыл бұрын
About 3:00, shouldn't it be n!/2? ABC and CBA is the same path but reversed? I like your videos, keep up the good work!
@BradHouser4 жыл бұрын
And so are ACB, BAC, BCA, and CAB. WIth three cities all paths are the same! You must return to the starting city.)
@ruyuehong23926 жыл бұрын
The dynamic network graph is amazing. I wonder how to create those dynamic animation. Is it a special drawing software or particular packages of some languages?
@DodaGarcia2 жыл бұрын
I know this is 4 years ago, but just in case you didn't find it, this is p5js! It's a free JavaScript library that makes it easy to create these drawings, and it also has an in-browser editor you can use to get started. It's a fantastic tool and this channel has lots of tutorials for it.
@michaellazar90787 жыл бұрын
does the salesman have to end up at home after hitting each point once or does he travel from job to job forever? #2 if you had a short repeatable solution. how would a person responsibly disseminate their findings?
@ErikHarloff8 жыл бұрын
You spoke about providing the Processing code to this example as well. Unfortunately, I didn't find is on github (github.com/CodingRainbow/Rainbow-Code/tree/master/challenges/CC_35_TSP/CC_35.1_TSP). Would you be so nice to provide the Processing code for TSP? Awesome!
@Teth478 жыл бұрын
So it turns out Windows 10's calculator can handle some pretty big numbers, 3000! is ~4.19^9130. Not bad.
@lumschente6 жыл бұрын
My Android calculators max is 13547! = 1.085^50089
@Tuberex4 жыл бұрын
4,1493596034378540855568670930866 with 9130 zeros
@Tuberex4 жыл бұрын
@@lumschente the biggest on windows 10 is 3248
@Gegellibu8 жыл бұрын
For the different path calculations the formula is actually n!/2 as ABC is the same path as CBA
@vernonalbayeros47198 жыл бұрын
Still, since when talking about time and space complexities we are referring to very large N counts, the problem's upper bound is still called n! or factorial, since any constant (in your comment's case = (1/2) * n! ) multiplying the n is "irrelevant"
@unchaynd7266 Жыл бұрын
5:29 I am here because I'm trying to make a program that can come up with the optimal arrangement for a bunch of chunks of music to form a song, such that the arrangement follows some given rules (e.g., what chunks are allowed to follow what other chunks, minimal repetition of chunks)
@jschoete34308 жыл бұрын
Hi ! Can I ask what studies you did, and what kind of work you do? I'm myself studying IT, and I love these videos and I would like to code like this all day long. also if it's not too much to ask, how much do you make with your job? I know it's a bit of a taboo question, so feel free to ignore ^^
@joonsungkim12187 жыл бұрын
don't you need to return to the starting point?
@kevnar5 жыл бұрын
No. The salesman left his wife and family and never plans to go back.
@Caleb-zj9xi4 жыл бұрын
That’s called something else.
@Matt-yp7io4 жыл бұрын
@@Caleb-zj9xi no its not
@izoumashka8 жыл бұрын
well you can narrow down possible paths by just working out which are "edge" vertices and starting from them.
@nickgooch69288 жыл бұрын
You should use something like this to solve the Maze Generator you made ; )
@gunot56567 жыл бұрын
this guy is incredibly entertaining, lol
@Mosch8228 жыл бұрын
Great Video. Wanna see more
@kaal_bhairav_244 жыл бұрын
The time complexity can be reduces from n! to (n-1)! since we can fix a point and permute the remaining (n-1) points.
@BradHouser4 жыл бұрын
And assuming the distance from A to B equals the distance from B to A, you can divide (n-1)! by 2.
@gadeichhorn5 жыл бұрын
great stuff! would like to see ant colony simulation for the same problem or event multiple sales doing each multiple visits.
@MajorMandyKitten7 жыл бұрын
I'm in the middle of the video, so I'm not sure if you clarified the actual definition of "shallow copy". A shallow copy is a copy of a variable or array of variables that point to the same address in memory, thus, if you change a value of the original, you change the value of the copy. conversely, a deep copy will actually copy the original to a new address in memory, and allows you to change one of the variables without changing the other.
@TheCodingTrain7 жыл бұрын
Thanks for this info!
@MajorMandyKitten7 жыл бұрын
The Coding Train this channel is pretty cool! Keep up the good work!
@epicmonckey250017 жыл бұрын
Noob here, what does the index.html file look like. I have it, but when i try to open it in my browser all i get is a black box. PLZ HELP!
@pqazx14 жыл бұрын
how to take input from user for the dist bw points ??and then do this??
@assimez-zaky83634 жыл бұрын
This is relaxing
@stephfong45778 жыл бұрын
Wow, I hope I knew about your channel earlier!
@yerkoantonioalvarez6 жыл бұрын
Great video! But tsp requires to return to initial citie
@Anticitizen6668 жыл бұрын
Is this a case where a genetic algorithm could do a "good enough" job in a much shorter time for large lists of coordinates? I.e.you could feed it an acceptable total distance, or time to travel, and it could quickly evolve a decent route.
@tiborsaas8 жыл бұрын
yes :)
@vernonalbayeros47198 жыл бұрын
I don't know about that. I just finished doing a branch&bound implementation of the traveling salesman problem and I can't see why you'd go the genetic algorithm path on this one (for anyone interested, look up my github and I've done 3 different branch and bound implementations for different heuristics: github.com/drkztan/javasalesman). I've also used dijkstra's algorithm to create some tables to fetch distance data in linear time instead of calculating it at every solution node. Neural network or a very well thought out heuristic+preparation work for a branch and bound type algorithm seems much, much better.
@TheHpsh8 жыл бұрын
think something someone can try, is instead of making each gene to be just one city, and mutation changes that city, they can try to make a gene to start with every city, and randomly let every agent select randomly between the possibilities in the gene, and make mutation randomly delete a city in that gene. in a way, this will be the reverse way most genetic algorithm work the idea is that wrong a wrong city in gene x, will make that gene less fit, then a gene without that city. hope that make some sense, english is not my language
@oooBASTIooo8 жыл бұрын
Probably not, unless your approximation is really coarse. A property of NP-hard problems is that they cannot be approximated very well. This is because a good approximation yields a precise solution (follows from the PCP theorem, if you want to look it up)
@TheHpsh8 жыл бұрын
maybe, one thing i am pretty sure of, is that my code will be very slow :-) partly because of it can't use crossover, and has to have a mutation rate that are extremely low.
I work with TSP problems with capacity, multiple time windows, service times and profit. The problem escalates so much faster but with some smart meta heuristics, you can get a nice solution really quick. If someone wants the state-of-the-art method message me... My current best is 100 nodes optimality for simpler problems with 1 vehicle .... Generally improving and check of a route of 20-30 points with time, capacity and profit take less than a millisecond.... so you can try 1000's improvements each second.
@toshb13848 жыл бұрын
"in the future, *some many years from now*, people will be complaining about how pokemon go is irrelevant." LOL, pokemon go has become irrelevant literally after a few weeks
@mintyplays46828 жыл бұрын
Not anymore! It used a Max Revive and brought generation 2 out! :D
@ryuuji1597 жыл бұрын
and... stil irrelevant
@arddison38947 жыл бұрын
and... now i actually had forgotten it ever existed.
@KnakuanaRka6 жыл бұрын
I think it took a few months, but yeah, it blew over pretty fast.
@nufik80974 жыл бұрын
It's gone
@Habbxor8 жыл бұрын
Would Prim's algorithm work better? I searched up and this is an O(V^2), and Prim's is O(|E| log |V|). (V = vertex, E = edge/path b/w points)
@stoobertb8 жыл бұрын
Prim's is slightly different. Prim's will give you the Minimum Spanning Tree, which will be the shortest path that connects all cities to at least one other city, however, it may not be the shortest when traversing all cities as you may have to double back on yourself. Think of Prim's as a way of connecting all cities so all cities can be traversed using the least amount of road, however traversing that road may not be the shortest route as going directly.
@Habbxor8 жыл бұрын
You're right. Prim's could lead to having to travel the same path again because it doesn't guarantee a linear path.
@-rXr-8 жыл бұрын
Hi denial, love your vids, can you make a video on A* path finding algorithm plz
@makarandlahane39047 жыл бұрын
as you said we want the total sum of all distances,then why haven't you returned the sum from calcDistance function?
@garmurinn4 жыл бұрын
I think you forgot to put console.log(recordDistance); between line 69 and line 70 in #35.3 in the web editor on the website.
@MuhammadAfzal-tk9xl4 жыл бұрын
You explain very well But i have a question on another day i was watching your A* search algorithm video whats the difference between this concept and that A* search ? Secondly can i make code of this in c++? Please do reply
@satishkpradhan2 жыл бұрын
A* is for calculating the shortest distance between a node pair... but for tsp, it is tour that starts and end at the same node. That makes the problem hard and can't be solved by exact methods.
@dibibob14746 жыл бұрын
smart and helpful. thanks sir :)
@Invenitive6 жыл бұрын
Why did you do linear paths instead of round trips? All of the examples I've seen of the TSP use round trips
@kevnar2 жыл бұрын
Scwalla Vatatan! The next new thing! I'm going to create it, just to prove Shiffman right!
@amit_awadhi3 жыл бұрын
This video gives me confidence😂 You're exactly like me, always trying to do things bruteforce way till they work fine🤟
@WahranRai5 жыл бұрын
Why not computing greedy algorithm (visiting the closest city...) giving you the upper bound ?
@netbotcl5865 жыл бұрын
because we want the optimal answer.
@louis10018 жыл бұрын
Starting 2017 and people already finds old Pokémon GO :/ Great Video!!
@codycodes75274 жыл бұрын
this will be remade with you being an imposter and finding how to kill crewmates
@irfankarmali48492 жыл бұрын
Wouldn't using a algorithm be better than using a randomizer or trying every possibilty. Like maybe the Greedy Algorithm or the Bellman-Ford Algorithm.
@bhavyabhatia23377 жыл бұрын
Is there a video for this solution using DP, not brute force ?
@sudhamahajan22724 жыл бұрын
how do u make that animation part??what do u use??
@rodneyjohnson94762 жыл бұрын
I want to use this algorithm but where can I find the listing that explains the Java functions in basic command set
@coenraadloubser57684 жыл бұрын
Array sorting method is going to miss instances where a return trip to a city is shorter than a connecting trip...
@_rlb2 жыл бұрын
True, but the salesperson problem specifically states that every city has to be visited exactly once.
@sudhamahajan22724 жыл бұрын
How to stop this prog after iterations are completed..?
@wardiofficial69457 жыл бұрын
could you please make a video to code a system that use GA for navigating the customer of supermarket when they are doing their grocery shopping task. The system should use the shelf's coordinate and the result will display a list of shelf label of the selected shelf from the distance calculated from the supermarket front door. tq
@chopper3lw5 жыл бұрын
TSP is the minimum CIRCUITAL path through the points IT IS NOT the minimum path through the set. It's only the CIRCUITAL part that makes it NP-HARD. There's non NP solutions to minimum path.
@arhabersham7 жыл бұрын
Help! At 10:05 , I don't see index (element?) [3]... I only see [0] to [2] . Did I miss something?
@sensei01018 жыл бұрын
Isn't it a good idea to cache parts of the system? So when it hits again, it is just to look it up instead of calculating everything all the time?
@davatron50008 жыл бұрын
👍🏻 for "schmullivatatani"
@emmahii8 жыл бұрын
There's no way, recalculating the distance between ALL points every time the order changes is in any way efficient... Calculating the distance between every pair of points just once and then just adding them up is much faster.
@xiandongzhang59276 жыл бұрын
You only need to store direct distance between one city and another, so , it's n*(n-1)*0.5
@DBear80083 жыл бұрын
Watching in 2021, PokemonGo is not quite irrelevant but in the back of many peoples minds
@JustSomebody-e9h7 жыл бұрын
What library would be good to use in Python to take care of drawing the lines and visually representing this algorithm?
@funxiobolic7 жыл бұрын
Check out pyGame. It's a Python library aimed at game developers, so it has a lot of drawing/graphics functions.