27 Nisan 2017 Perşembe

Extreme Programing Nedir?


Extreme Programing  (XP): Kent  Beck  tarafından  bir  yazılım  geliştirme  disiplini olarak  XP  ortaya  çıkarılmıştır ve grup  içi  iletişime  çok  önem  veren  bir  yazılım  geliştirme  yöntemidir. XP ile proje  yaşam döngüsü (life cycle) çerçevesinde proje geliştirimi sağlanır. Proje  yaşam döngüsü bazı uygulamalara (practices) bağlıdır. Yazılım geliştirmede kolaylığı ve esnekliği sağlamak için; XP 12 farklı uygulamayı öngörür.

Extreme Programing Avantajları

Hata oranını azaltma
Yazılımın erken safhasında somut gelişmeler sağlaya bildiğinden, oluşan hataların farkına varabilir.Bu hataları da kendi içerisinde oluşturduğu küçük yaşam döngüleri ile telafi edebilir.
Projenin gelişme süresini kısaltır.
Artırımsal yaklaşım sayesinde hızlı bir şekilde genel planın oluşması sağlanır.Burada aynı bütün ekip tarafından proje süresi tahmini de yapılır.
Değişikliklere izin verir.
Esnek iş yürütme ve fonksiyonellik sayesinde, işletmenin değişen ihtiyaçlarına cevap verir
Yazılımsal olarak ortaya çıkabilecek tıkanıklıkları azaltır.
Müşteriler ile birlikte monitörlerden programcılar ve müşteriler ortak bir şekilde test yaparak ileride tıkanıklıkların ortadan kaldırılmasını sağlarlar.




Extreme Programing 4 Temel Noktası

İletişim
XP in ilk temel taşı iletişimdir. Projelere baktığımızda ortaya çıkan önemli problemlerin insanların birbirleriyle tam olarak anlaşamaması nedeniyle olduğunu görünür. Bazen programcılar sormaları gereken doğru soruyu soramazlar. Bazen de projenin yapısıyla ilgili önemli bir gelişmeyi söylemezler. Bu yüzden projelerde çeşitli tıkanma noktaları olabilir. Bazen de proje yöneticileri programcılara belirtmeleri gerekenleri tam olarak belirtemezler. Bu da projenin gelişme sürecilerini olumsuz etkiler. XP de iletişim yüz yüze olmalıdır. İletişim sürekliliği olmalıdır. Yazılım ekibi ile yazılımı kullanacaklar arasında sıkı bir iletişim bağı olması esastır. Bu sayede sorunlar erken fark edilir.


Basitlik
XP in ikinci temel taşı basitliktir. Aslında basitlik sağlanması zor olan bir konudur. Basitlik, zorunlu işlerin yapılmasıdır. Gerekli olmayan bir şey varsa, kesinlikle bu konu XP basitlik ilkesi içerisinde olmamalıdır. Dünyadaki en zor şey gelecekte ne gibi ihtiyaçlarla karşılaşacağımızı bilmemektir. Bu nedenden dolayı oluşturulacak yapı, gelecekte ne gibi isterlerin ortaya çıkacağını tam olarak bilmeden oluşur. Buna göre esnek zaman ve maliyeti göz önüne alınmış bir yapı oluşturmak gerekmektedir. XP en iyi şekilde bu basitliği sağlamak için, bu günün ihtiyaçlarını hedef alarak esnek ve basit bir sistem gerçekleştirmeye çalışır. 


Geri Besleme
Sistemlerin geri dönüşümü olması sistemler için paha biçilemez bir fırsat yaratır. Geri dönüşüm sayesinde optimizasyonun oluşmasına engel olan tehlikeler ortadan kaldırılır. Öncelikle programcılar bütün sistemin mantıksal yapısını içeren bölüm testleri oluşturur. Programcılar sistem hakkında somut bilgiler elde ederler. Müşteriler yeni bir “stories” hikâye ile geldikleri zaman, programcılar hemen bu yeni gelen hikâyenin gerçekleşmesi ile ilgili çalışma yapıp bu “stories” e uygun bir çalışma gerçekleştirirler.


Cesaret
XP in dört temel noktasından en zoru cesarettir. Projelerin üzerine yılmadan gidilmesi projelerin geliştirilmesi açısından son derece önemlidir. Cesaretin olmadığı projelerde korku gelişir ve gelişen bu korku projeyi başarısızlığa iter. Yazılım işlerindeki başarısızlık ise; yazılımın çöpe gitmesidir ve maalesef genel duruma da baktığımızda yazılımların büyük bir kısmının çöpe gittiğini görünyorur. Başarısızlık, genel tabiat içerisinde olan bir durumdur. Başarısızlıktan korkmak yerine başarısızlığı oluşturan nedenler üzerine gitmek yerinde olacaktır. Başarısızlıkla mümkün olunan en kısa sürede karşılaşmak, daha sonra telafi etme şansını arttırır.

Extreme Programing 12 Uygulama
Planlama Oyunu
Ekipte müşteri
Müşteri Testi
Basit Tasarım
Çiftli Programlama
Sürekli Tümleştirme
Kısa sürümler
Yeniden yapılandırma
Ortak sahiplenme
Metaphor
Kodlama standardı
Kırk saat haftada  



Extreme Programing  Çalışma Mantığı

 


 









Riskler ve Risk çözümleri

Extreme Programing Korkmadıkları
Kodlama
Değişen fikirler
Geleceği bilmeden yol alabilmek
Çalışan bir sistemin yapısının değişmesi
Testler yazılması



Extreme Programing Roller
Müşteri
Yazılım geliştirme sorumlusu
Test sorumlusu
Ölçüm sorumlusu
Koç
Danışman
Yönetici

Agile Sistemler

Agile sistemler klasik methodlara duyulan eleştiriler nedeniyle ortaya çıkmıştır.

Klasik Metotlara Olan Eleştiriler

Sürüm yani çalışan program çok geç ortaya çıkıyor.
Sürüm çok geç çıktığı için hatalar çok geç anlaşılıyor.
Verimli değil.
Esnek değil, yeni gelen isterler doğrultusunda kendi yapısını değiştiremediği için yeni isterleri karşılayamıyor.
Değişiklik geç ve zor yapılıyor.




Agile Metodolojiler

Extreme Programing
Scrum
Crystal Family
Rup

17 Nisan 2017 Pazartesi

Milli İmkanlarla Üretilen Bilişim Sistemleri

1-)Linux Tabanlı İşletim Sistemi Pardus



2-) Mini Bilgisayar Poyraz



3-) Virüs Programı Chomar



Web Sayfası: https://www.chomar.com.tr/en/page.aspx


4-) Mount & Blade 2




10 Nisan 2017 Pazartesi

GitHub Kodları & GitHub Kullanımı



Git bir versiyon kontrol programıdır. Git sayesinde proje içerisinde bulunan dosyaların gelişimi takip edilebileceği gibi aynı zamanda eski versiyonlara kolayca erişilip o versiyonlar üzerinden değişiklikler yapılabilir.

---- Git Kurulum----
Git Kurulumu oldukça basittir.Kullandığınız Windows yada Linux işletim sistemine göre https://git-scm.com/downloads sitesinden ücretsiz olarak bilgisayarınıza Git programını indirebilirsiniz.
Kurulum sırasında sadece "Use Git from Git Bash only" seçeneğinin seçili olduğunu kontrol edin.



----Git ilk Kullanım----
Git programı MS Dosta bulunan CMD ekranına benzeyen ve Git Bash adı verilen bir konsol ekranına sahiptir. Git Bash programını kullanmak için aşağıdaki temel komutları bilmemiz gerekmektedir.




----Gitte Kullanılan Temel Komutlar----
pwd  (Bulunan dizinin pathini listeler)
ls   (list kelimesinden üretilmiştir. Hangi dosyaların çalıştırılan klasörde olduğunu gösterir.)
ls -la  (klasördeki gizli dosyalarıda gösterir.)
cd Deneme  (Deneme isimli klasörün içerisine girilmesi için kullanılır.(örnek cd Deneme) Bu komutun doğru çalışması için bulunan dizinde Deneme diye bir klasörün bulunması gerekmektedir. (Ms Dos taki aynı komut cd .. diyerek üst klasöre geçilebilir.))
git --version (Kullanılan Git'in versiyonu öğrenilir.)
git init (Seçilen dosyada Git'in kullanılacağı söylenmiş olunur.)
git add . (Seçilen klasörün içerisindeki her şeyi Git kullanımına ekle)
git commit -m "ilk mesajı ekle" (ilk mesajı ekle yazısı git içerisine kim tarafından oluşturulmuşsa o kişi ile ilgili bir log olarak Git'e eklenir. Bu komut sayesinde zamanda bir kayıt oluşturmuş olunur bu sayede eğer projede geri dönmek istersek kolay bir şekilde o noktaya geri dönebiliriz.)
git diff (Dosyanın içerisindeki farklı kısmı gösterir. Listelerde çıkan kırmızı olan yazılar silinen yeşil olan yazılar ise mevcut yada yeni eklenen yazıları göstermektedir. Özetle git diff çalışan sürüm ile represorory arasındaki farktır.)
git diff --staged (represorory ile staged arasındaki farklı gösterir.)
git rm dosyaadi.uzantisi (örnek rm deneme.txt) (deneme.txt isimli dosyayı diskten siler.)
git mv home.txt first.txt (home.txt adını first.txt olarak değiştirir.)
git mv home.txt deneme/first.txt (home.txt dosyasını deneme isimli klasörün içerisine first.txt olarak kayıt eder.)
exit (Ekrandan çıkış.)
clear (Ekranı temizleme)
git log (Daha önceden kayıt edilen mesajları listeler)
git log --authour="Murat" (Murat adı ile yapılan mesajları listeler)
gir status (Mevcut durum hakkında bilgi verir.)
git checkout --Dosya.uzantısı (Çalışan dosyayı en son kayıtlı haline getirir. Yeni yapılanları siler.)
git commit -am "Veriler kurtarıldı" (Mesajı dierk olarak çalışan dosyaya ve repository ye mesaj kaydı olarak ekler.)
git reset HEAD dosya.txt  (Dosyayı eski çalışan haline resetleyererk geri getirir.)
Eski versiyonları geri getirmek
git log (Eski alınan kayıtlara bakmak için git komutu kullanılarak komutlar listelenir. Listelenen komutlardan git checkout komut mumarasının ilk 5-6 hanesi yazılarak (Örnek checkout e292939) o zamanki hali tekrardan yüklenmiş olur.
Dosyaları Github'a yüklemek
Github üzerinden açacağınız bir hesaba dosya eklemek için hesap açıldıktan sonra bir repository oluşturmanız gerekmektedir. Oluşturulan repositoryye dosya eklemek için
git remote add githubsf (githubsf sizin tarafınızdan oluşturulacak isim) https://github.com/sizin hesabınız/sizin repositoryniz.git
(Örnek $ git remote add githubsf https://github.com/Yazilimcilardunyasi/SF.git)
Oluşturulan repositoryye uzaktan bağlantı için
git remote sizin repositori adınız
(Örnek $ git remote githubs)
Dosyalar göndermek için
git push -u sizin reporisotory isminiz master
(Örnek $ git push -u githubsf master)
Enter dedikten sonra kullanıcı adınızı ve şifrenizi girmeniz için bir ekran çıkacaktır. Şifre bilgileri doğru olarak girildikten sonra dosyalarınız githubın sistemine yüklenmeye başlayacaktır.
Bu işlemin sonucunda StreetFigther isimli oyunun kodları github sitesine eklenmiş olacaktır.
Eklenen kodların bulunduğu repository https://github.com/Yazilimcilardunyasi/SF

--------Github-GUI-------
Github Bash haricinde Github GUI programı kullanılarakta Githuba dosya yüklenebilir.


----www.github.com Kullanımı----
İstenirse www.github.com sitesinde yüklenen repository üzerinde kopyalar oluşturulabilir. Proje ile ilgili web adresi varsa o adrese link verilebilir. Başka kullanıcıdan gelen değişiklikler yada güncellemeler sisteme eklenebilir.




Bir ekip halinde aynı proje üzerinde çalışılabilir. Görevler eklenip kişilere ataması yapılabilir.Başkalarının geliştirdiği github projelerine katkı yapılabilir yada önerilerde bulunulabilir.Projeyi geliştiren kişilerle karşılıklı mesajlaşılabilir.

-----Git Eğitimi-----

25 video videoların uzunluğu 5-10 dk (Eğitim dili İngilizce)



 23 video (Eğitim dili Türkçe)


---Git Türkiye İstatistikleri---

Programlama Dillerine Göre İl Bazlı Dağılım


Detaylı Bilgi https://alpcanaydin.github.io/github-stats-for-turkey/#/





3 Nisan 2017 Pazartesi

Youtube Kanallarının Gelirlerini Öğrenin

Youtube kanallarının ne kadar gelir elde ettiğini merak ediyorsanız; Socialblade sitesi bu sorunun cevabı tahmini  bir değer aralığı ile gösteren güzel bir site (sitenin adresi: https://socialblade.com). Sitenin kullanımı için tek yapmanız gereken, aranan Youtube kanalını sitenin sağ üst köşesinde bulunan kısma yazıp aratmak. Çıkan listeden aranan kanalın bulunduğu linke tıklandığında sitenin aylık ve yıllık kazancı ekranın alt kısmında (Estimated Earnings olarak) gösterilmektedir. Buradaki aralık değeri çok büyük olduğu için genellikle az olan tutarın dikkate alınması daha doğru bir bilgi verecektir. (2.4K nın anlamı 2400$). Sitede ayrıca aranan kanal hakkında detaylı bilgilere erişilebilmektedir. (izleme sayısı, kanılın sınıfı, derecesi, vb)


27 Mart 2017 Pazartesi

VR Teknolojileri için Yazılım Geliştirin

Günümüzde pekçok farklı ürün ile kendisini sürekli olarak geliştiren VR (Virtual Realisation - Sanal Gerçeklik) teknolojileri; her bütçeye uygun birbirinden farklı araçlara sahiptir. Bu gelişen teknolojinin imkanlarını ve geliştirilen başlıca ürünlere baktığımızda temel olarak VR gözlüklerini ve VR platformlarını görmekteyiz.

VR Gözlükleri

Google Cardboard, oldukça basit bir kuruluma sahip ve ekonomik bir çözümdür Cardboard 5TL ila 20TL gibi bir fiyatla alınabilmektedir. Google Cardboard'un üzerinde bulunan barkod okutularak sanal gerçeklik deneyimine giriş yapılabilir. 6" telefonların bile takılabildiği Google Cardboard için geliştirici olarak (https://developers.google.com/vr/) uygulamalar oluşturabilir. Ürünün dezavantajları Motion sickness (baş dönmesi ve mide bulantısı) yapma riski yüksektir.


Case 4u vr box 3.0 Türkiye'de ençok satan ve Çin'den ithal edilen bir sanal gerçeklik gözlüğüdür. Yanında bulunan ufak kumanda ile temel haraketler gerçekleştirilebilir. 25TL ila 35TL gibi bir fiyata internetten temin edilebilir Ürünün dezavantajları Motion sickness (baş dönmesi ve mide bulantısı) yapma riski yüksektir.



Samsung cep telefonu kullananlar için uygun bir alternatif olan Samsung VR 119TL gibi bir fiyattan satın alınabilir. Daha önceki ürünlere göre daha profesyonel bir üründür. Ürünün dezavantajlarına baktığımızda, uygulamaların ve araçların oldukça pahalı ve içerik sayısının yetersiz olduğu görülmektedir. Motion sickness dediğimiz baş dönmesi ve mide bulantısı yapma riski diğer araçlara göre daha az olsada yinede 10 dakika ve üzeri kullanımlarda bu sorunlar oluşabilmektedir.


Microsoft Hololens oldukça gelişmiş bir VR gözlüğüdür. 3000$ gibi bir fiyattan yurt dışında satışı başlamıştır. Pek çok alanda kullanıma uygun bir yapıya sahiptir. Ürün ile ilgili uygulamalar geliştirmek için detaylı bilgi https://www.microsoft.com/microsoft-hololens/  sitesinde bulunmaktadır.





VR Platformları


HTC vive tarafından üretilen bir teknolojidir. Sistemin kullanımı için güçlü bir oyun bilgisayarına ve boş bir odaya ihtiyaç duyulmaktadır. 3000$ gibi bir fiyata satın alınan bir ürünün internet adresi https://www.vive.com/eu/




Virtuix Omni gerçek bir VR platformudur. Omni sanal gerçeklik için geliştirdiği pek çok ürünle rakiplerinden farklı bir yerde konumlanmaktadır. Türkiye'de 10.000$ gibi bir fiyatla satılan platform için uygulamalar geliştirilebilir (http://www.virtuix.com/resource-center/)




Bulanık Mantık

Tarihsel Geçmişi:
Bulanık küme teorisi türetilen
1965 yılında University of California, Berkeley Prof Lotfi Zadeh tarafından geliştirilmiştir.
Bulanık küme teorisi geleneksel ("net") küme teorisininden farklıdır.
Geleneksel küme teorisi: Bir nesne ya bir dizi ya da aittir.
Bulanık küme teorisi: bir nesne bir dizi "kısmen ait" olabilir
Örnek: Uzun ve Kısa: iki takım insanları sınıflandırmak için
Orta uzunlukta olan biri kısmen o gruba ait olarak sayilır.


Bulanık Küme Üyeleri

Geleneksel Küme Teorisi: Bir nesne dizi üyesidir.
Bulanık Küme Teorisi: Bir nesne kısmen bir dizi üyesidir.


Üyelik Fonksiyonu

Örneğin, Kısa, Orta ve Uzun üç grup için üyelik fonksiyonları tanımlayabilir. Kişinin boyuna göre hangi grupta olacağı belirlenir.
Kimi oyunlarda anlık yapılan yer tespiti gibi.



Mantıksal Operatörler

Programlar içerisinde sürekli olarak kullanılan mantıksal operatörlerin doğru ve yerinde kullanılması. Ara değer ve eşittlik değerlerine bakılarak sistemin test edilmesi önemlidir.

 Bulanık Mantık Operatörleri

Gelen veriye göre program içerisinde kullanılan mantıksal operatörlerin kullanımları farklı olabilir.
NOT:
AND:
OR:


Kurallar

Örnek olarak mavi olarak tanımlanan bir grupta bulunan bir nesne diğer mavi nesnelerine saldırmaması gerekmektedir.
Diğer nesnelerden biri kırmızıya döndüğünde saldırı yapılacak şekilde kuralın tekrardan tanımlanması gerekmektedir.
Anlık olarak durum kendi ile tutarsız olarak görünsede kendi içinde belli bir bulanık mantık sorusu olarak karşımıza çıkmaktadır.
Burada anlık duruma göre karar değişecektir. Bunun kolay bir şekilde yapılması için bir karar tablosu içeriinde bu kuralların yazıldığı bir tablo oluşturmak yararlı olacaktır.


Bulanık Mantığın Bir Oyuna Uygulanması
Kullanılan Bulanık Mantık Yöntemi ile oyuncunun yapacağı hareketleri belirleyip ona karşı bir karşı duruşun tanımlanması gerkmektedir.
Yanda Hareket İle İlgili Tablo örneği verilmiştir.
Eğer ilk hareket yumruk,İkinci Hareket yumruksa üçüncü hareketin aşağıdan gelen bir tekme  olma ihtimali daha çoktur.

Kullanıcıların Hareketlerinin Tahmini


Nasıl Karar Tablosu Oluşuturulacak
İlk ve ikinci Tablo sutununa olası bütün sonuçlar yazılır.
Kullanıcı oyun sırasında yaptığı hareketler kaydedilir.
Örnek olarak kullanıcı yumruk, yüksek tekme hareketlerini yaptıktan sonra yumruk atma ihtimali ve yüksek tekme ihtimali daha fazladır.
Daha önce yaptığı hareketlere bakılarak.

Kullanıcının Hareketini Tahmin Et!

3. Hamlede hangi hareketi yapacaktır?



Olasılık

Eğer gelecek hareketi bilsek okuncu kanaza bilirmi?
Peki olasılı nasıl belirleyeceğiz!
Örnek: 100 hareketten 30 hareket yumruksa yumruk yani punch yüzdesi P(punch) = 0.3
Matematik Nerelerde ?

P(AuB) = P(A) + P(B) – P(AnB)
Son 100 günün; 70 günü hava kapalı ve 35 günü yağmurlu oldu başka hava koşulun da bir günde olmadı!
Kaç gün hem kapalı hemde yağmurlu oldu?



AI nedir?

Oyun programlamadaki yapay zeka; oyun içierisindeki kullanıcı dışındaki bütün objelerin insana özgü bazı davranışları oluşturmasını sağlamaktır.
Örnek Olaraak
Araba oyunundaki diğer arabalar.
Ateş ettiğiniz canavarlar
RTS oyunlarındaki rakip nişancı

AI Kullanımı

Yapay Zeka Kullanıcının Herbir yeni hareketine göre tekrar kendini çalıştırarak yeni bir konum belirlemelidir.
Her Yerde Kullanılmalımıdır?


Yapay Zekanın Amacı
Amaç Temelli Ne Yapacağı sıkı kurallarla verilmiş. Bu hareketi yap şu hareketi yapma.
Hemen değişen durumlara yanıt verme.
Knowledge intensive - the AI knows a lot about the world and how it behaves, and embodies knowledge in its own behavior
Karakteristik olarak sadece bazı olaylara yanıt verme.
Ayrıca AI sayesinde
AI hızlı ve kolay geliştirmeye yardımcı olur.
CPU ve RAM kullanımını azaltır.


Yapay Zekaların Video Oyunlarında Kullanımı

5-10% CPU Gerçek Zamanlı
25-50% CPU for Durum Temelli

Takip /Kaçış davranışları
Grup davranışları
Sonlu durum makineleri
Adaptasyon / Öğrenme


Takip Kaçma

En kısa yol algoritması bu durumlar için kullanınıla bilir. Canavarın oyuncuyu en kısa yoldan yakalaması. Araba yarışında diğer arabanın oyuncuyu en kısa yolu bularak geçmesi.


Örnek Kod

Oyunu oynayan ile Oyundaki canavarın konumlarının alınıp
en kısa yoldan canavarın kullannıcı üzerine saldırması

Predator is at coordinates (predatorX,predatorY).

Prey is at coordinates (preyX,preyY).

if (predatorX > preyX) {
   predatorX--;
} else if (predatorX == preyX) {
   // do nothing
} else {
   predatorX++;
}

if (predatorY > preyY) {
   predatorY--;
} else if (predatorY == preyY) {
   // do nothing
} else {
   predatorY++;
}

Algoritmayı Geliştirmek

En Kısa Yolun Bulunması

Algoritmayı Geliştirmek

Bresenham’s algoritması ile En Kısa yolun farklı bir şekilde bulunması


Ekran ile Bu işin bulunması

Ekrandaki Pixel ilede bu işler gerçekleştirilebilir.

 Örnek Bir Kaçma Algoritması


Terimleri Tanımlama:

Closing velocity, Vc = Vprey – Vpredator

Range to close, Sc = Pprey – Ppredator

Time to close, Tc = | Sc | / | Vc |


Intercept position hesaplaması

Intercept position = Pprey + Vprey x Tc


Yol Bulma


Problem Oyuncu verilen yollar içerisinden en kıza olan yolu bulması gerekmektedir.
Yol Bulma Algoritması
En etkin şekilde en az maliyetle en güzel yolu bulma
Etkinlik
Yolun Durumuna Bak
Çevrenin Durumuna Bak
Noktaları Kullan.




Pseudocode


Add starting node to open_list

while (not_empty(open_list)) {
    current_node := node from open_list with lowest cost
    if (current_node==goal_node) {
        path complete
    } else {
        move current_node to closed_list
        for each node adjacent to current_node {
            if ((node is not in open_list) && (node is not in closed_list)) {
                move node to open_list
                assign cost to node
            }
        }
   }
}




Yolu Nasıl Kat Edeceğiz


Add starting node to open_list

while (not_empty(open_list)) {
    current_node := node from open_list with lowest cost
    if (current_node==goal_node) {
        path complete
    } else {
        move current_node to closed_list
        for each node adjacent to current_node {
            if ((node is not in open_list) && (node is not in closed_list)) {
                move node to open_list
                assign cost to node
            }
        }
   }
}

Yolun Tamamlanması yada yolda bir yer katedildiğinde hangi kodların çalışacağı liste içerisinde nasıl kullanılacağı verilmiştir.


Maliyeti Nasıl Belirleyeceğiz?


Maliiyet = Başlangıç Maliyeti + Sezgisel

Başlangıç Maliyeti= Başlangıç Noktasında olan maliyet

Sezgisel = Hedef Düz bir çizgi gibi ulaşılabiliyormu?


Örnek-1

Örnek Devam

Örnek  2


 Graph Yol Bulma


Maze tarzı Bir oyunda Yolbulma.




 Bir Graf oluştur.
Düyümler Sistem İçerisinde Tanımanmış Olmalı

 Her Birinin Belli Bir Maliyet Hesabı Olmalı.



Graph En Kısa Yol (En Kısa Yolu Bulma Algoritması)