Bilgisayar Algoritmaları Nelerdir ve Nasıl Çalışırlar?

Yayınlanan: 2022-01-29

Matematik veya programlama ile ilginiz yoksa, "algoritma" kelimesi size Yunanca gelebilir, ancak bu makaleyi okumak için kullandığınız her şeyin yapı taşlarından biridir. İşte ne olduklarına ve nasıl çalıştıklarına dair hızlı bir açıklama.

Feragatname: Matematik veya bilgisayar bilimi öğretmeni değilim, bu nedenle kullandığım terimlerin tümü teknik değil. Çünkü matematikte pek rahat olmayan insanlar için her şeyi sade bir İngilizce ile açıklamaya çalışıyorum. Bununla birlikte, işin içinde biraz matematik var ve bu kaçınılmaz. Matematik meraklıları, yorumlarda düzeltmekten veya daha iyi açıklamaktan çekinmeyin, ancak lütfen aramızdaki matematikten hoşlanmayanlar için basit tutun.

Resim Ian Ruotsala tarafından

Algoritma nedir?

'Algoritma' kelimesinin etimolojisi 'cebir'e benzer, ancak bunun Arap matematikçinin kendisine, el-Khwarizmi'ye atıfta bulunması dışında (sadece ilginç bir haber). Aramızdaki programcı olmayanlar için bir algoritma, A girdisini alan ve B çıktısını sağlayan ve ilgili verileri bir şekilde değiştiren bir dizi talimattır. Algoritmaların çok çeşitli uygulamaları vardır. Matematikte, çok daha gelişmiş şeylerin yanı sıra, bir veri kümesindeki noktalardan işlevlerin hesaplanmasına yardımcı olabilirler. Kendilerini programlamada kullanılmalarının yanı sıra, dosya sıkıştırma ve veri şifreleme gibi şeylerde önemli roller oynarlar.

Temel Bir Talimat Seti

Diyelim ki arkadaşınız sizinle bir markette buluşuyor ve siz onu kendinize doğru yönlendiriyorsunuz. “Sağ kapıdan gir”, “soldaki balık bölümünü geç”, “mandırayı görürsen beni geçtin” gibi şeyler söylüyorsunuz. Algoritmalar böyle çalışır. Önceden bildiğimiz veya süreç sırasında öğrendiğimiz kriterlere dayalı talimatları göstermek için bir akış şeması kullanabiliriz.

("Buz Kıran Rutin" başlıklı resim EDIT: Trigger ve Freewheel'in izniyle)

Reklamcılık

BAŞLANGIÇ'tan yola çıkarsınız ve ne olduğuna bağlı olarak bir sonuca giden "akış"ı izlersiniz. Akış çizelgeleri, bilgisayarlar tarafından kullanılan bir dizi talimatı daha anlaşılır bir şekilde temsil edebilen görsel araçlardır. Benzer şekilde, algoritmalar daha fazla matematik tabanlı modellerle aynı şeyi yapmaya yardımcı olur.

grafikler

Yön vermenin çeşitli yollarını göstermek için bir grafik kullanalım.

Bu grafiği tüm noktaları arasında bir bağlantı olarak ifade edebiliriz. Bu görüntüyü çoğaltmak için başka birine bir dizi talimat verebiliriz.

Yöntem 1

Bunu bir dizi nokta olarak gösterebiliriz ve bilgi standart grafik biçimini takip eder = {(x1, y1), (x2, y2), …, (xn, yn)}.

grafik = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }

Her noktayı birbiri ardına çizmek ve bunları bir önceki noktaya bağlamak oldukça kolaydır. Bununla birlikte, her yöne giden bin nokta veya birden fazla segment içeren bir grafik hayal edin. Bu listede çok fazla veri olurdu, değil mi? Ve sonra her birini birer birer bağlamak zorunda kalmak acı verici olabilir.

Yöntem 2

Yapabileceğimiz başka bir şey de, bir başlangıç ​​noktası, bu nokta ile bir sonraki nokta arasındaki doğrunun eğimini vermek ve bir sonraki noktanın nerede bekleneceğini standart graph={(başlangıç ​​noktası}, [m1, x1, h1] biçimini kullanarak belirtmektir. ], …, [mn, xn, hn]} Burada, 'm' değişkeni doğrunun eğimini, 'x' sayılacak yönü (x veya y olsun) ve 'h' size nasıl olduğunu söyler. bu yönde saymak için çok fazla.Ayrıca her hareketten sonra bir nokta çizmeyi de hatırlayabilirsiniz.

grafik = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}

Reklamcılık

Aynı grafiği elde edeceksiniz. Bu ifadedeki son üç terimin aynı olduğunu görebilirsiniz, bu yüzden bir şekilde “bunu üç kez tekrarla” diyerek bunu kısaltabiliriz. Diyelim ki 'R' değişkeninin göründüğünü her gördüğünüzde, son şeyi tekrarlamak anlamına geliyor. Bunu yapabiliriz:

grafik = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

Ya tek tek noktalar gerçekten önemli değilse ve yalnızca grafiğin kendisi önemliyse? Bu son üç bölümü şu şekilde birleştirebiliriz:

grafik = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

İşleri daha önce oldukları yerden biraz kısaltır.

Yöntem 3

Bunu başka bir yoldan yapmayı deneyelim.

y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2.5x-7.5, 5≤x≤7
y=-3x+29, 7≤x≤8
y=-3x+29, 8≤x≤9
y=-3x+29, 9≤x≤10

Burada saf cebirsel terimlerle var. Bir kez daha, noktaların kendileri önemli değilse ve sadece grafik önemliyse, son üç öğeyi birleştirebiliriz.

y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2.5x-7.5, 5≤x≤7
y=-3x+29, 7≤x≤10

Şimdi, hangi yöntemi seçeceğiniz yeteneklerinize bağlıdır. Belki matematikte ve grafikte harikasın, bu yüzden son seçeneği seçiyorsun. Belki navigasyon konusunda iyisindir, bu yüzden ikinci seçeneği seçersin. Ancak bilgisayarlar alanında, birçok farklı türde görev yapıyorsunuz ve bilgisayarın yeteneği gerçekten değişmiyor. Bu nedenle, algoritmalar tamamladıkları görevler için optimize edilir.

Unutulmaması gereken bir diğer önemli nokta, her yöntemin bir anahtara dayanmasıdır. Onlarla ne yapacağınızı bilmiyorsanız, her talimat seti işe yaramaz. Her noktayı çizmeniz ve noktaları birleştirmeniz gerektiğini bilmiyorsanız, ilk nokta kümesi hiçbir şey ifade etmez. İkinci yöntemde her bir değişkenin ne anlama geldiğini bilmiyorsanız, tıpkı bir şifrenin anahtarı gibi, bunları nasıl uygulayacağınızı bilemezsiniz. Bu anahtar aynı zamanda algoritma kullanmanın ayrılmaz bir parçasıdır ve genellikle bu anahtar toplulukta veya bir "standart" aracılığıyla bulunur.

Dosya Sıkıştırması

Bir .zip dosyası indirdiğinizde, içindekileri kullanabilmeniz için içeriğini çıkarırsınız. Günümüzde çoğu işletim sistemi, her şeyi arka planda yaparak normal klasörlermiş gibi .zip dosyalarına dalabilir. Windows 95 makinemde on yıldan fazla bir süre önce, içindeki dosya adlarından başka bir şey görmeden önce her şeyi manuel olarak çıkarmam gerekiyordu. Bunun nedeni, diskte .zip dosyası olarak depolananların kullanılabilir bir biçimde olmamasıydı. Açılır bir kanepe düşünün. Yatak olarak kullanmak istediğinizde minderleri çıkarıp açmanız gerekiyor, bu da daha fazla yer kaplıyor. İhtiyacınız olmadığında veya taşımak istediğinizde tekrar katlayabilirsiniz.

Reklamcılık

Sıkıştırma algoritmaları, hedeflendikleri dosya türleri için özel olarak ayarlanır ve optimize edilir. Örneğin, ses biçimlerinin her biri, ses codec bileşeni tarafından kodu çözüldüğünde orijinal dalga biçimine benzer bir ses dosyası verecek olan verileri depolamak için farklı bir yol kullanır. Bu farklar hakkında daha fazla bilgi için önceki makalemize bakın, Tüm Bu Ses Formatları Arasındaki Farklar Nelerdir? Kayıpsız ses biçimleri ve .zip dosyalarının ortak bir yanı vardır: her ikisi de, açma işleminden sonra orijinal verileri tam biçiminde verir. Kayıplı ses kodekleri, insan kulağı tarafından duyulamayan frekansları kırpmak ve bazı ayrıntılardan kurtulmak için bölümlerde dalga biçimini yumuşatmak gibi disk alanından tasarruf etmek için başka yollar kullanır. Sonunda, bir MP3 ve bir CD parçası arasındaki farkı gerçekten duyamayabiliriz, ancak ilkinde kesinlikle bir bilgi eksikliği var.

Veri şifreleme

Algoritmalar, veri veya iletişim hatlarının güvenliğini sağlarken de kullanılır. Verileri daha az disk alanı kullanacak şekilde depolamak yerine, diğer programlar tarafından algılanamayacak şekilde depolanır. Birisi sabit sürücünüzü çalar ve taramaya başlarsa, dosyaları silseniz bile verileri alabilir çünkü verilerin kendisi hala oradadır, yönlendirme konumu gitmiş olsa bile. Veriler şifrelendiğinde, saklanan her şey olduğu gibi görünmez. Parçalanma zamanla oluşmuş gibi, genellikle rastgele görünür. Ayrıca verileri depolayabilir ve başka bir dosya türü olarak görünmesini sağlayabilirsiniz. Resim dosyaları ve müzik dosyaları, örneğin şüphe çekmeden oldukça büyük olabildikleri için bunun için iyidir. Bütün bunlar, bir tür girdi alan ve onu başka, çok özel bir çıktı türüne dönüştüren matematiksel algoritmalar kullanılarak yapılır. Şifrelemenin nasıl çalıştığı hakkında daha fazla bilgi için HTG Açıklamalarına bakın: Şifreleme Nedir ve Nasıl Çalışır?


Algoritmalar, bilgisayar bilimlerinde çeşitli kullanımlar sağlayan matematiksel araçlardır. Bir başlangıç ​​noktası ile bir bitiş noktası arasında tutarlı bir şekilde bir yol sağlamak için çalışırlar ve onu takip etmek için talimatlar sağlarlar. Vurguladığımızdan daha fazlasını biliyor musunuz? Açıklamalarınızı yorumlarda paylaşın!