İçeriğe atla

A* arama algoritması

A* arama algoritması
A* algoritmasının engel bulunan bir uzayda hedefe giden yolu bulması.
SınıfArama algoritması
Veri yapısıÇizge
Zaman karmaşıklığı
Alan karmaşıklığı

A* arama algoritması, sezgisel bir çizge dolaşma ve yol bulma algoritmasıdır. Tamlığı, optimalliği ve optimal verimliliği ile bilgisayar biliminin birçok alanında kullanılmaktadır.[1] Tüm düğümleri belleğinde tuttuğundan olan alan karmaşıklığı dezavantajıdır.

İlk olarak 1968'de Stanford Araştırma Enstitüsü'nden Peter Hart, Nils Nilsson ve Bertram Raphael tarafından yayınlanmıştır.[2]

Sözde kod

function reconstruct_path(cameFrom, current)
    total_path := {current}
    while current in cameFrom.Keys:
        current := cameFrom[current]
        total_path.prepend(current)
    return total_path

function A_Star(start, goal, h)
    openSet := {start}

    cameFrom := an empty map

    gScore := map with default value of Infinity
    gScore[start] := 0

    fScore := map with default value of Infinity
    fScore[start] := h(start)

    while openSet is not empty
        current := the node in openSet having the lowest fScore[] value
        if current = goal
            return reconstruct_path(cameFrom, current)

        openSet.Remove(current)
        for each neighbor of current
            tentative_gScore := gScore[current] + d(current, neighbor)
            if tentative_gScore < gScore[neighbor]
                cameFrom[neighbor] := current
                gScore[neighbor] := tentative_gScore
                fScore[neighbor] := tentative_gScore + h(neighbor)
                if neighbor not in openSet
                    openSet.add(neighbor)

    return failure

Kaynakça

  1. ^ Russell, Stuart; Norvig, Peter (2020). Artificial Intelligence: A Modern Approach (4. bas.). Pearson Education. s. 108. ISBN 978-1-292-40113-3. 
  2. ^ Hart, P. E.; Nilsson, N. J.; Raphael, B. (1968). "A Formal Basis for the Heuristic Determination of Minimum Cost Paths". IEEE Transactions on Systems Science and Cybernetics. 4 (2): 100-107. doi:10.1109/TSSC.1968.300136. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Mariya Şarapova</span> Rus eski profesyonel tenisçi, İş insanı

Mariya Yuryevna Şarapova, Rus eski profesyonel tenisçi, iş insanı.

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">Gezegenimsi bulutsu</span>

Gezegenimsi bulutsu veya gezegenimsi nebula, yaşamının son evresinde bulunan bir kırmızı devin yaydığı parlak bir iyonize gazdan oluşan salma bulutsusu türüdür.

<span class="mw-page-title-main">Birleştirmeli sıralama</span>

Birleşmeli Sıralama, bilgisayar bilimlerinde derecesinde karmaşıklığa sahip bir sıralama algoritmasıdır. Girdi olarak aldığı diziyi en küçük hale gelene kadar ikili gruplara böler ve karşılaştırma yöntemi kullanarak diziyi sıralar.

<span class="mw-page-title-main">Hızlı sıralama</span>

Hızlı sıralama, günümüzde yaygın olarak kullanılan bir sıralama algoritmasıdır. Hızlı sıralama algoritması n adet sayıyı, ortalama bir durumda, karmaşıklığıyla, en kötü durumda ise karmaşıklığıyla sıralar. Algoritmanın karmaşıklığı aynı zamanda yapılan karşılaştırma sayısına eşittir.

<span class="mw-page-title-main">Yığın sıralaması</span>

Yığın Sıralaması, bilgisayar bilimlerinde kullanılan karşılaştırmaya dayalı bir sıralama algoritmasıdır. Uygulamada pek çok bilgisayarda hızlı sıralama algoritmasından daha yavaş çalışsa da en kötü durumda O(n log n) çalışma süresi vardır. Yığın sıralaması diziyi yerinde sıralar ancak kararlı bir sıralama algoritması değildir.

İplik sıralaması bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır. Sıralanacak olan dizinin, sıralanmış alt dizilerinin oluşturularak bu alt dizilerin birleştirilmesi yoluyla sonucun oluşturulması mantığına dayanır. Algoritmanın her bir aşamasında ana dizinin üzerinden geçilir ve bu diziden zaten sıralanmış olan bir dizi eleman çıkarılır. Çıkarılan bu eleman dizileri daha sonra birleştirilir.

Döngü açma, programın çalışmasını hızlandıran döngü dönüştürme yöntemlerinden biridir. Bu yöntem yazılan programın kod satır sayısını artırmaktadır. Döngülerdeki dönüşüm manuel olarak programcı tarafından yapılabileceği gibi kodlar derleyiciler tarafından da düzenlenebilmektedir.

<span class="mw-page-title-main">OpenMP</span>

OpenMP; Solaris, IBM AIX, HP-UX, GNU/Linux, MAC OS X ve Windows işletim sistemleri üzerinde çoğu işlemci mimarisi üzerinde Fortran, C++, C programlama dillerinde çoklu platform paylaşımlı bellek çoklu işlemeyi destekleyen bir uygulama geliştirme arayüzüdür, yani bir API'dir. OpenMP derleyici yönergelerinin kütüphane rutinlerini ve ortam değişkenlerinin çalışma zamanı davranışını etkileyen bir kümesini içerir.

Swift, Apple tarafından iOS ve macOS platformlarına iOS ve Mac uygulamaları geliştirmek için oluşturulan, derlenerek çalışan güçlü ve kullanımı kolay, nesne yönelimli bir programlama dili.

<span class="mw-page-title-main">İzmit Katliamı</span> Yunanların bölgeden çekilirken şehri yağmalaması

İzmit katliamı 24 Haziran 1921 tarihinde meydana geldi ve İngiliz gazeteci Arnold Joseph Toynbee'nin tahminine göre 300'den fazla sivil Türk o gün öldürüldü. Toynbee olaydan kısa bir süre sonra şehri ziyaret etti ve olayları belgeledi. Olaylar Türk-Yunan Savaşı (1919-1922) sırasında Yunan kuvvetleri şehirden çekilirken meydana geldi ve şehir yağmalandı ve bir bölümü yandı. 29 Haziran 1921 günü İngiliz parlamentosu Yunan çekilmesini ve olası zulümleri tartıştı.

SHA-2, ABD Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanmış kriptografik özet (hash) fonksiyonları kümesidir. Kriptografik özet fonksiyonları, hesaplanmış “özet” ile bilinen ve beklenen özet değerinin karşılaştırılmasıyla, dijital veri üzerinde yürüyen matematiksel operasyonlardır. Özet fonksiyonları ile bir kişi verinin bütünlüğüne karar verebilir. Örneğin, yüklenmiş bir dosyanın özet değerini hesaplamak ve sonucu önceden açıklanmış özet sonucu ile karşılaştırmak, yüklemenin değiştirilip değiştirilmediğini veya üzerinde oynama yapılıp yapılmadığını gösterebilir. Kriptografik Hash fonksiyonlarının kilit noktası çakışma dirençleridir: hiç kimse aynı özet çıktısı veren iki farklı girdi bulamamalıdır.

Argon2, Temmuz 2015'te Parola Özetleme Yarışmasının galibi olarak seçilen anahtar türetme fonksiyonudur. Lüksemburg Üniversitesi'nden Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından tasarlanmıştır. Argon2'nin referans uygulaması, CC0 lisansı veya Apache License 2.0 altında yayınlanmış ve üç ilgili sürüm sağlamıştır:

Bcrypt, Niels Provos ve David Mazières tarafından Blowfish şifreleme yöntemi esas alınarak geliştirilmiş ve ilk kez USENIX’te, 1999 yılında sunulmuş bir parola özet fonksiyonudur. Rainbow table saldırılarına karşı salt kullanmasının yanı sıra adaptif bir fonksiyon olma özelliğine sahiptir. İterasyon sayacı arttırılarak yavaşlatılabilir ve bu sayede kaba kuvvet saldırılarına karşı dirençli kalabilmektedir.

Stuart L. Schreiber, Broad Enstitüsü'nün kurucu ortağı olan Harvard Üniversitesi'nde çalışan bilim insanıdır. 2016 yılında, Wolf Kimya Ödülü'nü kazanmıştır.

Marvel Sinematik Evreni, Marvel Comics yayınlarında görünen karakterlere dayanan ve Marvel Studios tarafından üretilen süper kahraman filmlerine ilişkin hikâyenin geçtiği yer, bir medya imtiyazı ve paylaşılan kurgusal bir evrendir. İmtiyazın birinci evresi, dört farklı süper kahramana sahip altı film içerir ve 2012 filmi Yenilmezler'de bir almaşık kurguya yol açar. İmtiyazın ikinci evresi, birinci evre filmleri için üç devam filminin yanı sıra iki yeni film ve 2015'te piyasaya çıkan almaşık kurgu Yenilmezler: Ultron Çağı'ndan oluşmaktadır. Üçüncü evre, önceki filmlerin dört devam filmi ve dört yeni filmin yanı sıra Yenilmezler: Sonsuzluk Savaşı ve Yenilmezler: Endgame almaşık kurgu filmlerini içerir. Dördüncü evre, önceki filmlerin üç devam filmi ve üç yeni film sunmayı amaçlamaktadır.

Marvel Sinematik Evreni filmleri, Marvel Comics'in çizgi romanlarında görünen karakterlere dayanılarak Marvel Studios tarafından üretilen bir dizi Amerikan süper kahraman filmleri serisidir. MCU, tüm filmlerin geçtiği ortak bir kurgusal evrendir. Filmler 2007 yılından beri çekilmektedir ve bu süre zarfında Marvel Studios toplamda yirmi üç film yayımlamıştır. Gelecek dönemde çıkacak en az on beş film ise çeşitli geliştirilme aşamalarındadır. Sinematik evren, küresel gişede 22,5 milyar doların üzerinde hasılat kazanarak tüm zamanların en yüksek hasılat yapan film serisi olmuştur. Bu ekonomik sonuçlara, enflasyonsuz hesapla tüm zamanların en yüksek hasılat yapan ikinci filmi olan Avengers: Endgame de dâhildir. 2021 itibarıyla, en yüksek hasılatı kazandıran ilk yirmi beş filmin sekiz tanesi de Marvel Studios'a aittir.

C++20, C++17'den sonra C++ programlama dili için ISO/IEC standardının revizyonunun adıdır. Bu standart Şubat 2020'de Prag'daki toplantıda WG21 tarafından sonuçlandırıldı. Taslak 4 Eylül 2020 tarihinde onaylandıktan sonra C++20 standardı şu anda son çalışmalardan geçiyor.

<span class="mw-page-title-main">Nullsoft Scriptable Install System</span>

Nullsoft Scriptable Install System (NSIS), Winamp'ın yapımcıları Nullsoft tarafından desteklenen Microsoft Windows için komut dosyasıyla çalışan bir kurulum sihirbazı hazırlama aracıdır. NSIS, başta zlib lisansı olmak üzere, özgür yazılım lisanslarının bir kombinasyonu altında yayımlanır. Amazon, Dropbox, Google, Ubisoft, FL Studio, BitTorrent ve McAfee gibi kullanıcılarla, InstallShield gibi ticari özel mülk ürünlere yaygın olarak kullanılan bir alternatif haline geldi.