
Turkish: 
(Sean :) Peki burada ne bulduk Mike, söyle bana, söyle!
(Mike :) Sayfamda çizilen garip bir grafik var. Önceki bir videoya yapılan yorum, Dijkstra'nın en kısa yolunu sordu, şimdi
Dijkstra'nın araştırma parçalarından biri için daha kısa yolunu uyguladım.
Birkaç yıl önce yapıyordum, bu yüzden şöyle düşündüm: "En azından bir şeyler hakkında görüş bildirmek zorunda kaldım!"
Öyleyse Dijkstra'nın en kısa yolundan, ne olduğu, nerede kullanıldığı vb. Hakkında konuşalım.
Yol bulma algoritmaları açıkça oldukça önemlidir. Bunları her zaman Google haritalarında veya sat-nav sistemimizde kullanırız,
Pekala, uydu navigasyonuyla ilgili son bir video vardı.
ve nasıl çalıştığını, ama elbette bu hikayenin sadece yarısı.
(Mike :) Tam olarak nerede olduğunuzu bulmak, sorunun ilk kısmı, ikinci kısmı ise "buraya gitmek istiyorum.
"Bunu yapmanın en iyi yolu nedir?"
Tamam, rota planlama aynı zamanda yönlendirme gibi şeylere de gelir, yani eğer bir ağınız ve birçok yönlendiriciniz varsa
hedefinize en hızlı şekilde ulaşmak için hangi portların içinden geçeceğiniz bu paketleri yönlendirmenin en iyi yolu nedir, bu yüzden böyle şeyler - şimdi Dijkstra'nın
en kısa yollar, bunların hepsinde çok fazla kullanım görür ve

English: 
(Sean:) So what we got here, Mike, tell me, tell me!
(Mike:) Well, we have a strange graph drawn out on my page. A comment on a previous video asked about Dijkstra's shortest path, now
I happen to have implemented Dijkstra's shorter path for one of the pieces of research
I was doing a few years ago, so I thought: "I'm at least somewhat placed to have to give an opinion on it!"
So let's talk about Dijkstra's shortest path, what it is, where it's used, and so on.
Path finding algorithms are obviously quite important -- we use them all the time on Google maps or on our sat-nav system,
all right, there was a recent video on satellite navigation
and how it works, but of course that's only half the story.
(Mike:) Finding out where you are exactly is the first part of the problem, the second part is "I want to go over here,
what's the best route to do this?"
Okay, route planning also comes in on things like routing, so if you've got a network and lots of routers
what's the best way to route those packets through which ports to get to your destination the quickest, so things like this -- now Dijkstra's
shortest paths sees a lot of use in all of these things and

English: 
extensions of it, so for example A* search -- so I've drawn out an
approximation of a road system on this piece of paper,
so we're going to use the analogy of roads
for this one, because I think it's a good -- good example of types of shortest paths and we're trying to start here, at S, and
get down to E, right, this is broadly speaking, a small version of what a sat-nav does when you say:
"How do I get there", right?
Now, each of these
nodes represents a junction, so, the vertices on the graph, so, A could be a roundabout, B the T-junction -- doesn't really matter --
actually B is more of a roundabout because it has four outputs -- anyway, each of these numbers
represents how hard it is to get along that road, so that in real life would be whether it was a motorway or a highway,
whether it was a country road with a load of potholes,
maybe there's a tree down it and so you can't get through that road, right, so in the Dijkstra implementation that I
am familiar with, and most Dijkstra implementations,

Turkish: 
uzantıları, yani örneğin A * arama - ben bir çizdim
Bir yol sisteminin bu kağıda yaklaştırılması,
bu yüzden yolların analojisini kullanacağız
bunun için, çünkü bence bu iyi - en kısa yol türlerine iyi bir örnek ve buradan başlamaya çalışıyoruz.
E'ye inin, doğru, bu genel olarak konuşur, şöyle deyince sat-nav’ın ne yaptığının küçük bir versiyonu:
"Oraya nasıl giderim", değil mi?
Şimdi, bunların her biri
düğümler bir kavşağı temsil eder, yani grafikteki köşeler, yani A, bir kavşak olabilir, B, T-kavşağı - gerçekten önemli değil -
aslında B daha çok dolambaçlıdır çünkü dört çıkışa sahiptir - her neyse, bu sayıların her biri
bu yolda ilerlemenin ne kadar zor olduğunu temsil eder, böylece gerçek hayatta bir otoyol mu yoksa otoyol mu olacağını
Bir sürü çukurlu köy yolunda olup olmadığı,
belki aşağıdan bir ağaç vardır ve bu yoldan geçemezsiniz, doğru, yani Dijkstra uygulamasında
Dijkstra uygulamalarına aşinayım ve çoğu

Turkish: 
daha küçük daha iyidir tamam, bu yüzden genel olarak bu yoldan konuşmak bizim otoyolumuz gibi, iki,
bu iyi,
bu birazcık tüy bırakıyor, bilirsin, belki hafif A-yollar için,
tamam, ve buradaki yedi, bir kaleye düştün,
ve bilirsin, motorda su var.
ve bu kötü. "Şimdi buradan buraya nasıl bir rota bulacağız" sorusu, şimdi, elbette, bu küçük bir grafik.
yani aslında yapabileceğimiz tek şey el ile tüm yolu araştırmak ya da
çok basit bir kaba kuvvet arama yaklaşımı türünü kullanmak, en iyisini elde etmek
ancak İngiltere’yi, ABD’yi veya diğer bazı ülkeleri
büyük yol ağı, bunu göze alamayız, doğru, nasıl baktığımız konusunda biraz daha akıllı olmalıyız.
Ayrıca bir rota bulduğumuzda, aslında en kısa yol olduğunu kesinlikle bilmek isteriz.
ve biz sadece birini özlemedik. Dijkstra'nın yaptığı temelde
Bu boşlukta bir tür kaba kuvvet taşkın dolgusu aramasına benzer,
ama bir şekilde yapar - en mantıklı sırada,

English: 
smaller is better okay, so broadly speaking this route here is kind of like our motorway right, twos, ones,
that's good,
this one is a bit of a faff, you know, for some maybe mildly A-roads,
right, and this seven here that you're falling in a fort,
and, you know, you've got water in the engine,
and it's bad. The question is "how do we find a route from here to here", now, of course, this is a small graph
so actually what we could just do is just search all the way through it by hand or
using a very simple sort of brute-force search approach, and kind of get the best go, right,
but if you think of the UK or the US or some other countries'
massive road network, we can't afford to do that, right, we have to be a bit smarter about how we look through.
And we also want to know absolutely that once we found a route, it is in fact the shortest route,
and we didn't just miss one. What Dijkstra does is basically
similar to a sort of brute-force flood-fill search through this space,
but does it in a kind of -- in the order that makes the most sense,

Turkish: 
Bu yolların ne kadar hızlı olduğuna bağlı olarak ilk önce en hızlı yolu kontrol edecektir. Yani Dijkstra'yı yapmak için,
birkaç şeye ihtiyacımız var, her şeyden önce açıkça bir grafiğe ihtiyacımız var ve sonra bir kısmına ihtiyacımız var - bazı
yolun ne kadar uzun olduğu fikrini, diyelim ki B
Bir kere veya onun gibi bir şey hesapladığımızda, araştırmamızın başlangıcında S’ye sahibiz.
(Sean :) Başlangıç ​​olarak, doğru mu? (Mike :) Başlangıç ​​için, evet
beni şaşırttı çünkü diğerlerinden bazıları
mektuplar sadece sırada ve sonra bu ikisi değil, ama yine de
S'nin sıfır mesafesi var, doğru, bu S'ye ulaşmam için hiçbir maliyeti yok çünkü zaten oradayım, başka her şey -
Sadece bir çift ortaya koyacağım, sadece size göstermek için, A, B ve K'nın sonsuzluk mesafesine sahip oldukları için, çünkü bu temelde biz yapmadık
Henüz baktım, ne kadar uzağımızı bilmiyoruz, bu yüzden herkes için oraya varmanın mümkün olamayacağını biliyoruz.
hayır ve nihayet, E
aynısı, sonsuzluk, ama yaptığımızı söylemek için gülen bir suratla, doğru,
Şimdi burada oluşturacağım bu yapı "öncelik sırası" denir. Bunların her birinin bir mesafesi olacak
ama onlar da bu mesafeden sipariş ediyorlar, bu yüzden en kısa olanı en üstte, bu önemli ve ilerledikçe yapacağız.

English: 
based on how fast these roads are, so it will check the quickest roads first. So to do Dijkstra,
we need a few things, first of all we obviously need a graph right and then we need some -- some
idea of how long the path is, to let's say B,
once we've calculated it or something like it so at the very beginning of our search we have S, we are at S,
(Sean:) As for start, right? (Mike:) It's for start, yes,
which confused me because some of the other
letters are just in order and then these two aren't, but anyway,
S has a distance of zero, right, it costs me nothing to get to S because I'm already there, everything else --
I'll just put a couple out, just to show you, A, B and K have a distance of infinity because that basically says we haven't
looked yet, we don't know how far, so for all we know it might not be possible to get there,
no, and finally, E
it's just the same, it's infinity, but with a smiley face to say that we've made it, right,
now this structure here that I'm going to create is called a "priority queue". Each of these will have a distance,
but they're ordered also by that distance, so the shortest one is at the top, that's important, and we'll do it as we go through.

English: 
So let's start our search, we start at S, and we look through the neighbors of S and we say "right, well, A,
it costs me 7 to get to A", right, it's a bit of a pain.
So, we were at 0 distance, it costs me 7, so now we're at 7, right?
So, A, I scratch my infinity,
and I write 7, all right, so A is 7, okay, A is still the second shortest path currently because all the others are infinity.
Yeah, B is 0+2 so that's 2,
so let's just put a 2 in there. (Sean:) This is all even though we haven't actually got to the end yet,
you're just looking at the numbers.
(Mike:) we can't get to E without having a look through all of these junctions,
so this is what we're doing, and we're working our way in a smart way, now B
is in this priority queue, but it has a lower number than A, so it takes its place at the top of a line,
okay, so that's good so far.
Finally, the only other thing connected to S is
C, which has got a weighting of three, so let's just find C in my list, of course, shuffled
thingies and there we go,
and hopefully

Turkish: 
Öyleyse aramaya başlayalım, S ile başlıyoruz ve S'nin komşularına bakıyoruz ve "doğru, A,
A'ya ulaşmak bana 7'ye mal oldu ", tamam, biraz acı verici.
Yani, 0 mesafedeyiz, bu bana 7'ye mal oldu, yani şimdi 7'deyiz, değil mi?
Yani, A, sonsuzluğumu çiziyorum.
ve ben 7 yazıyorum, tamam, yani A 7, tamam, A halen en kısa ikinci yol, çünkü diğerleri sonsuzluk.
Evet, B 0 + 2, yani 2
öyleyse oraya sadece 2 koyalım. (Sean :) Bunların hepsi henüz bitmedi bile olsa,
Sadece rakamlara bakıyorsun.
(Mike :) Bu kavşakların hiçbirine bakmadan E'ye ulaşamıyoruz,
yani yaptığımız şey bu ve biz de yolumuzu akıllıca çalışıyoruz, şimdi B
bu öncelik sırasına göre, ancak A'dan daha düşük bir sayıya sahip, bu nedenle satırın en üstünde yer alıyor,
tamam, şimdiye kadar bu iyi.
Son olarak, S'ye bağlı diğer tek şey
Üç ağırlığında olan C, öyleyse listemde C'yi bulalım, tabi ki karıştırılmış
şey ve orada gidiyoruz
ve umutla

Turkish: 
Dijkstra'nın nasıl çalıştığını gördükten sonra nasıl netleşmeye başlayacak, yani C üç, yani
Tabii ki unuttum
araştırmamızı yaparken, bulunduğumuz yeri takip etmek zorundayız.
Biliyoruz ki S yolunda iki mesafe vardır, tamam, yani S önceki sürümdeydi, doğru, bu A için de geçerli ve
Ayrıca C için de geçerlidir.
C ve A yani şimdi sırayla bizde var, görmediklerimiz hala sonsuz. Şimdi, S yapıldı, tamam, böylece alabiliriz
ve onu bitmiş yığımıza koyun, tamam mı, S artık endişelenmenize gerek yok.
Bir sonraki adım, şu anki en kısa yolun nerede olduğunu görmek, peki B,
B, en düşük sayıya sahip, yani B'ye bakmaya başlayalım.
Biz zaten S'ye gittik, bu yüzden onu görmezden geliyoruz. D'ye gidebiliriz.
öyleyse D'yi koyalım ve D B'ye olan mesafe artı bu yol ne ise 6, 2 artı 4 6
ve rota
en kısa olan D, şu anda B'den geçiyor ve biz şunu koyacağız, şimdi 6, hemen A'nın üstüne gidiyor, tamam, orada

English: 
how Dijkstra works will start to become clear once you see what I do next, so C is three, the only other thing that of
course I forgot, is
while we're doing our search, we have to keep track of where we've been, so B, for example,
we know has a distance of two through the path S, ok, so S was the previous version, right, that's also true of A, and
also true of C. Now after we swap
C and A so now we have them in order, all we have not seen is still infinity. Now, S is done, right, so we can take it away
and put it in our finished pile over here, right, S we don't need to worry about anymore.
The next step, is to see where is the current shortest path, well it's B,
right, B has got the lowest number, so let's start looking at B. So, if we look at B,
we've already been to S, so we ignore it. We can go to D,
so let's put in a D, and D is the distance to B plus whatever this road is which is 6, 2 plus 4 is 6,
and the route
through D, which is shortest is currently going through B, and we'll put that in, now 6 goes in just above A, ok, there

English: 
we go. Now we can also go to B from A -- we haven't finished with A yet,
it's just sitting in this queue -- and currently the distance to A is 7, right,
but, actually, the distance to B was 2, and the distance to A from B is 3, which is 5, so actually,
taking this detour here which looks longer is actually shorter, because of this tree on the line or something like that right, so remember, you know this
isn't representative of the actual physical distance from S to C. So we've updated D, and A is now shorter, right?
So, we kept -- we take our A, and we say "well now the route is 5, not 7", it's decreased and
it's no longer the shortest path from S to A, it's from B,
so look scribble out S, right, like, I'm getting too much technical needs but don't worry about it.
So, A now overtakes D in our priority queue, all right?
So that's looking good, okay, H, B had a length of 2, H
has a length of 1, so H has a distance of 3, B is done, right? We've done B,

Turkish: 
Biz gideriz. Şimdi A'dan B'ye gidebiliriz - henüz A ile bitirmedik,
sadece bu sırada oturuyor - ve şu anda A'ya olan uzaklık 7, doğru,
ama, aslında, B'ye olan mesafe 2 idi ve A'dan B'ye olan mesafe 3'dü, yani 5,
Daha uzun görünen bu sapmayı buraya çekmek aslında çok daha kısa, çünkü çizgideki bu ağaç ya da buna benzer bir şey yüzünden
S ile C arasındaki gerçek fiziksel mesafeyi temsil etmiyorsa D'yi güncelledik ve A şimdi daha kısa, değil mi?
Biz de tuttuk - A'mızı alıyoruz ve "peki şimdi rota 5, 7 değil" diyoruz;
artık S'den A'ya en kısa yol değil, B'den.
Bu yüzden karalama bak S, tamam, çok fazla teknik ihtiyaç alıyorum ama endişelenmeyin.
Öyleyse, A şimdi sıramızda D'yi geçiyor, tamam mı?
Yani bu iyi görünüyor, tamam, H, B'nin uzunluğu 2, H
1 uzunluğa sahip, bu yüzden H 3 değerine sahip, B tamam mı? B yaptık,

English: 
we can count that as done, so C next, right, so we're here. We can't go to S, we can only go to L,
that's a nice, easy one. So I need to find out -- so L goes to C and
it's 3 plus 2, it's 5, so L comes in just underneath value like this, so C's done
So we look at H,
and we say "what's next from H". We can look at F, so F will get 3 plus another 3, so about 6,
via H, and then G is H, which is 3, plus 2 so that's 5.
A next, we've already been to S, we've already been to B. So we start to get a little bit faster now,
we've seen some stuff, already. What we're basically saying is, we know what the shortest path to B
is, because we've already seen it so we can only look at new things, so we look at D,
D is currently 6 via B, A is currently 5, 5 plus 4 is 9,
which is bigger than the old D, so we make no change, the shortest path to D
does not go through A, so we don't worry about that, ok A's done. Next up: L. L
can't go to C, we've already been there,
I and J both have a length of 4, so that's just fine, those two I and J --

Turkish: 
Yaptığımız gibi sayabiliriz, yani sıra C, tamam, yani buradayız. S’e gidemeyiz, sadece L’ye gidebiliriz.
bu güzel, kolay bir tane. Bu yüzden bulmam gerek - L de C ye gidiyor ve
bu, 3 artı 2, 5, yani L, bunun gibi değerlerin altına geliyor, yani C
Demek H’ye bakıyoruz.
ve "H'den sonra ne var" diyoruz. F'ye bakabiliriz, böylece F 3 artı bir 3 daha alır, yani 6,
H yoluyla, ve sonra G, H'dir, 3, artı 2, yani 5'tir.
Bir sonraki, biz zaten S'ye gittik, zaten B'ye gittik. Şimdi biraz daha hızlı olmaya başladık.
zaten bazı şeyler gördük. Temel olarak söylediğimiz, B'ye en kısa yolun ne olduğunu biliyoruz.
Çünkü, onu zaten gördük, böylece yalnızca yeni şeylere bakabildik, D'ye bakıyoruz.
D şu anda 6 B yoluyla, A şu anda 5, 5 artı 4 9
ki bu eski D'den daha büyük, bu yüzden hiçbir değişiklik yapmıyoruz, D'ye giden en kısa yol
A'dan geçmiyor, bu yüzden endişelenmiyoruz, tamam A bitti. Sıradaki: L. L
C'ye gidemem, biz zaten oradaydık,
Ben ve J ikisinin de uzunluğu 4, yani sorun değil, bu iki ben ve J -

English: 
[I'm] needing all of them --
right, so these both go through L, and they both have a path length of
9... 9 okay, so these go -- and they're both long, but they go in front of all the infinity ones.
But -- but down at the bottom here all right, the order isn't important.
So how [are] we doing, L is done, so then you can see what's about to happen, right?
We start with G, G has got a distance of 5, we've already been to H,
let's go to E, and so we say E goes back to G and
has a length of
5, 6, 7, and we're there, right?
And then the final step is just to backtrack our route based on where we've been, so E goes to G --
we can skip these, they aren't used -- G goes to H, H goes to B, and B
Goes straight to S, and that is our shortest route through this graph,
it's found by Dijkstra, the idea is, that if this graph was much much bigger,
you would prioritize looking down motorways first, because they have less weight, and you would
prioritize physically short distances,

Turkish: 
[Hepsine] ihtiyacım var -
Tamam, bu ikisi de L'den geçiyor ve ikisi de yol uzunluğuna sahip.
9 ... 9 tamam, yani bunlar gider - ve ikisi de uzundur, ama sonsuza kadar olanların önüne giderler.
Ama - ama aşağıda en altta, tamam, sipariş önemli değil.
Öyleyse nasıl gidiyoruz, L bitti, öyleyse ne olacağını görüyorsunuz, değil mi?
G ile başlıyoruz, G 5'e sahip, zaten H’ye gittik,
hadi E'ye gidelim, ve E diyoruz ki E G'ye geri döner ve
uzunluğu var
5, 6, 7 ve biz oradayız değil mi?
Ve sonra son adım sadece bulunduğumuz yere dayanarak rotanızı geri izlemek. E de G'ye gidiyor.
Bunları geçebiliriz, kullanılmazlar - G H'ye gider, H B'ye gider ve B
Dümdüz S'ye gidiyor ve bu grafikteki en kısa yolumuz,
Dijkstra tarafından bulundu, fikir şu ki, eğer bu grafik çok daha büyükse,
önce otoyollara bakmaya öncelik verirsiniz, çünkü daha az ağırlığa sahiptirler ve
fiziksel olarak kısa mesafelere öncelik vermek,

Turkish: 
aramanızı biraz daha hızlı hale getirmek için yapabileceğiniz herhangi bir şey.
Diyelim ki Nottingham'dan Londra'ya seyahat etmeyi diyelim, İskoçya'daki yollara bakmayın, en azından önce,
Çünkü olası değil
[onlar] en kısa olanlar olacaklar. Yaptığın şey, kendini M1'e götürmek ve Londra'ya doğru hızla seyahat etmeye başlamak.
olabildiğince. Bu bizi Dijkstra ile son bir soruna götürüyor.
belki başka bir video için hangisi?
Ama ben sadece - sadece onu tanıtacağım - evimde olduğum bir durumu hayal edersen,
ve diyelim ki evim burada, S'de ve bu bir tür [M] kavşağı, doğru, ki bu 26 hurdalıkla ilgili.
Ama buna A diyeceğiz, tamam, ve sonra bu, bu yöne gittiğim yer
Burada bir sürü düğüm var ve burada bir sürü düğüm var.
Ve bu da, bu otoyolun sonunda buradaki varış yerim. Hafif bir trafik sıkışıklığı nedeniyle,
Bunların hepsinde bunlardan biraz daha yüksek ağırlıklar var. Çünkü Dijkstra, yön hakkında herhangi bir fikir üretmiyor
Seyahat ediyorsanız, ne yaptığınıza dair daha akıllıca bir buluşma var, önce buraya bakacak,
bu otoyolda sonuna kadar seyahat edecek kadarıyla ve

English: 
anything that you can to try and make your search a bit quicker.
When you're searching to let's say travel from Nottingham to London, you don't look at the roads in Scotland, at least not first,
Because it's unlikely
[that] they're going to be the shortest ones. What you do is you get yourself to the M1 and start travelling down towards London as quickly
as possible. That leads us to one last problem with Dijkstra,
which is perhaps for another video?
But I'll just -- I'll just introduce it -- if you imagine a situation where I'm at my house,
and let's say my house is here, at S, and this is sort of [the] M1 junction, right, which happens to be about junking 26?
But we'll call this A, alright, and then this is where I'm going in this direction,
so lots of nodes along here, and there's lots of nodes along here.
And this is my destination down here on the end of this motorway. Because of a slight traffic jam,
these all have slightly higher weights than these. Because Dijkstra doesn't build any idea of the direction
you're traveling, any kind of heuristic about what you're doing in a sort of smarter way, it's going to look up here first,
it's going to travel all the way up this motorway as far as it can and

English: 
only change direction when it becomes the shortest path to do so, so
what you need to do if you're going to actually implement a sat-nav, is be a little bit smarter -- don't start sort of
looking to all the fast roads,
look at the fast roads that are going roughly in the right direction because otherwise you might be wasting a lot of time.

Turkish: 
sadece bunu yapmak için en kısa yol olduğunda yönünü değiştir,
Eğer bir sat-nav uygulayacaksanız yapmanız gereken biraz daha akıllı
tüm hızlı yollara bakmak,
Kabaca doğru yöne giden hızlı yollara bakın çünkü aksi halde çok zaman kaybedebilirsiniz.
