Matematik, bilgisayar bilimi ve diğer ilgili doktrinlerde, algoritma, hesaplamaları gerçekleştirmeye, belirli bilgileri işlemeye, problemlere çözüm vermeye ve çeşitli aktiviteleri gerçekleştirmeye izin veren, metodik ve sınırlı bir şekilde bulunan yerleşik ve kesin ilkeler dizisi olarak tanımlanır.. Bir başlangıç durumundan ve bir girişten başladığınızda, gerekli prosedürleri izleyerek, son duruma ulaşılır ve bir sonuç elde edilir. Algoritmalar, algoritmaların araştırılmasının amacıdır ve çoğu inanmasa da, günlük yaşamın her alanında da kullanılabilirler.
Bir algoritma nedir
İçindekiler
Hesaplamada genellikle belirli kararlara veya ihtiyaçlara yanıt vermek için bazı işlemlerin gerçekleştirildiği sıralı talimatlar dizisi olarak tanımlanır. Aynı şekilde, algoritmalar genellikle mantık ve matematikte kullanılır ve diğerlerinin yanı sıra kullanıcı kılavuzlarının, açıklayıcı kitapçıkların geliştirilmesinin temelini oluşturur. Matematikte en seçkin olanlardan biri, pozitif olan iki tamsayının en büyük ortak bölenini elde etmek için geometri uzmanı Öklides'e atfedilen ve doğrusal denklem sistemlerini belirlemek için iyi bilinen "Gauss yöntemi" dir.
Bilgisayar bilimi ile ilgili olarak, bu hesaplama, bir bilgisayar kullanılarak bir problemin belirlenmesi için izlenecek kılavuzlar dizisi olarak bilinir.
Bu nedenle algoritma, algoritmaların analizi ve tasarımına odaklanan bir disiplin olarak anlaşılmaktadır. Birincisi göz önüne alındığında, algoritmik olarak çözülebilecek problemleri anlamak için doğruluğu ve etkinliği gibi özellikleri zaman ve mekana göre incelemeye çalışır. İkincisi ise, halihazırda kurulmuş olan paradigmaları incelemeye çalışır ve yeni örnekler önerir.
Algoritma, bilgi işlemin ilerlemesinin merkezinde yer alır ve farklı alanlarda önemlidir. Bu şekilde, Facebook ve Google kadar başarılı hizmetlerin, algoritmalar veya özel veri yapıları işbirliği olmadan sahip oldukları bilgilerin büyüklüğünü ele almaları imkansız olacaktır. Ancak günlük yaşamda algoritmalar da kullanılmaktadır, bunun bir örneği sobanın tutuşmasıdır, çünkü kişinin mutfağa gittiği, onu gözlemlediği ve yakmaya başladığında sonu geldiği anda başlar..
Bir algoritmanın özellikleri
Algoritmanın, bir problemin çözümüne götüren sıralı ve sonlu çeşitli adımlar kümesi olarak bilinmesine rağmen, bu zorlukların niteliği, bulundukları bağlama göre değişiklik gösterdiği, bu şekilde problemler olduğu söylenmektedir. diğerleri arasında kimyasal, matematiksel, felsefi. Böylelikle doğasının çok çeşitli olduğu ve bilgisayar üzerinden yürütülmesine gerek olmadığı söylenebilir. Daha önce açıklanan her şeyin ötesinde, algoritmalar bugün ne olduklarını belirlemek için temel niteliklere sahiptir ve aşağıda bahsedilecektir.
- Bir algoritmada yer alan yönergeler, herhangi bir karışıklığa yer bırakmamak için spesifik olmalıdır; bu, karşılık gelen talimatların uygun şekilde takip edilmesi gerektiği veya tam tersine, kaydolduğunuz akışın grafik gösteriminin çözümü kolaylaştırmayacağı anlamına gelir. doğru.
- Kusursuz tanımlı olmalı, aynı sonucu elde edebilmek için mümkün olduğu kadar çok takip etmeye çalışmalı ve bunun tersi olması durumunda algoritma güvenilir olmayacak ve karar verirken yol gösterici olmayacaktır.
- Sonlu olmanın özelliğiyle bilinirler, genellikle bir noktada biterler ve daha sonra her adımın sonunda bir sonuç atarlar. Algoritma sonsuza kadar genişlerse ve asla çözülemeyecek bir başlangıç noktasına dönerse, bir paradoksun veya iyi bilinen tekrarlar "döngüsünün" varlığı söz konusudur.
- Son olarak, algoritmaların okunabilirliğinin anahtar unsur olduğu söylenir, çünkü argümanı anlaşılmazsa, karşılık gelen talimatlar izlenemez, ayrıca her birinde bulunan metnin doğrudan, açık ve özlü bir ifadesini gerektirir.
Bir algoritmanın bölümleri
Her algoritmik işlem, bir sistemin temel yapısına tabi olan üç farklı bölümden oluşur ve bunlar:
- Girdi: başlık veya başlangıç noktası olarak da adlandırılır, algoritmanın oluşumunu temsil eden ve okumayı motive eden ilk talimattır.
- Süreç: aynı zamanda bildirim olarak da adlandırılır, algoritma tarafından sunulan kesin detaylandırmadır ve temelde talimatların formülasyonu için anahtarlarının gövdesidir.
- Çıktı: Bu son aşamada, algoritma tarafından belirlenen özel talimatlar, örneğin komutları veya çözünürlükleri.
Algoritma örnekleri
Yaygın matematik hesaplama örnekleri, toplama için 2 + 3 = 5 ve çıkarma için 15-9 = 6'dır. Basit algoritmaları görselleştirmenin bir başka yolu da mutfak tarifleridir, çünkü bunlar belirli ve düzenli bir süreci açıklarlar, örneğin, "ısıtmak için önce yarım kap su koymalı, sonra bir tutam tuz eklemelisiniz ve son olarak Biber, çekirdeklerini ve damarlarını çıkarmak için bölünecek. " Bu modelde, temelde algoritmaları tanımlayan bir başlangıç, bir süreç ve bir son sunulmaktadır.
Algoritma türleri
Tüm dünyada var olan çeşitli algoritma türleri arasında, bir işaret sistemine göre sınıflandırılanlara ve işlevlerine göre diğerlerine vurgu yapılır. Algoritma temelde belirli bir problemi çözmek için en iyi bilinen çözümdür ve stratejilerine ve işlevlerine göre bunların farklı türleri vardır, bunlar arasında dinamik, ters, kaba kuvvet, fırsatçı, işaretleme vardır., rastgele vb. Yukarıda bahsedilen algoritmalara ek olarak, herhangi bir alandaki zorlukları çözmeye uygun olan bunlardan binlercesi vardır.
İşaret sisteminize göre
Kalitatif ve kantitatif bu kategoride yer alır.
- Niteliksel algoritmalar, sözlü unsurlara sahip olmakla karakterize edilir, bunların bir örneği, yemek pişirme sanatları için tarifler veya manuel çalışma için prosedürler gibi sözlü olarak verilen talimatlar veya tanınan "adım adım" tır.
- Niceliksel algoritmalar, belirli sayısal öğelerin varlığı ve örneğin karekök bulunduğunda veya denklemler çözüldüğünde matematiğin hesaplamaları yapmak için kullanılması nedeniyle nitel olanların tam tersidir.
Bu sınıflandırma içinde hesaplamalı ve hesaplamalı olmayan algoritmalar da vardır. Hesaplamalı olanlar, bir bilgisayar aracılığıyla gerçekleştirilir ve bir makinenin gerçekleştirilmesini gerektirecek kadar karmaşık olmaları ile karakterize edilir, buna ek olarak optimize edilebilen nicel algoritmalardır. Hesaplamalı olmayanların bir makine veya bilgisayar aracılığıyla gerçekleştirilme zorunluluğu yoktur; bunun açık bir örneği, bir televizyonun programlanmasıdır.
İşlevine göre
Aşağıdakiler bu sınıflandırmada yer almaktadır.
1. Markalama algoritması
Bu, fiyatları özenli bir şekilde belirlemek için otomasyonun kullanılmasıyla karakterize edilir, kullanıcı davranışı gibi faktörlere odaklanır ve aynı zamanda kullanıcıların karlarını artırmak için devalüe eden bileşenlerin fiyatlarını otomatik olarak belirleme yeteneği olarak bilinir. satıcılar. 1990'ların başından itibaren havayolu endüstrilerinin ortak uygulamalarında çok önemli bir rol oynadı.
Markalama algoritması, seyahat acentelerine veya bu çevrimiçi kuruluşlara atıfta bulunarak, oldukça rekabetçi endüstrilerde en yaygın uygulamalardan biri olmasıyla ayırt edilir. Bu tür bir algoritma son derece karmaşık veya nispeten basit hale gelebilir, çünkü çoğu durumda optimize edildikleri veya belirli testlerin sürekliliği ile kendi kendilerine öğretildikleri belirtilmektedir. Tüm bunların ötesinde, bireyler hem kararlılığa hem de adalete değer verme eğiliminde olduklarından, etiketleme algoritmaları da müşteriler arasında popüler olmayabilir.
2. Olasılık algoritmaları
Sonuçların elde edilme şeklinin olasılıklara bağlı olduğu, bunlar genellikle rastgele algoritmalar olarak bilinirler.
Bazı uygulamalarda, bu tür bir işlemin işlenmesi yaygındır, örneğin, mevcut veya tasarlanmış herhangi bir sistemin davranışı zaman içinde simüle edildiğinde, bunun sonucunda tesadüfi bir çözüm elde edilir. Diğer durumlarda, çözülecek problem genellikle deterministiktir, ancak olasılık algoritmasını uygulayarak çözmek için onu tesadüfi bir duruma dönüştürme olasılığı vardır. Rastlantının olumlu yanı, uygulamasının son derece sofistike matematik çalışmaları gerektirmemesidir.
Ek olarak, bu grup içinde sayısal olarak bilinen üç ana tür vardır: Monte Carlo ve Las Vegas.
- Sayısal algoritmalar, problemin yaklaşık bir sonucunu sağlayabilir ve genellikle mühendislikte uygulanır.
- Monte Carlo algoritmaları doğru veya yanlış çözümü verebilir ve belirli bir hata payına ve son olarak da sahip olabilir.
- Las Vegas algoritmaları asla yanlış bir cevap bırakmamaları ile ayırt edilirler, aslında doğru çözümü bulurlar veya olası başarısızlık konusunda sizi bilgilendirirler.
Dinamik programlama, algoritmanın sonuçları hesapladığı yöntemi ifade eder. Bazen sorunları olan belirli öğelerin çözümleri, diğer daha küçük sorunların sonuçlarına bağlıdır. Dolayısıyla, bunları çözmek için, en küçük alt problemleri çözmek için aynı değerlerin yeniden hesaplanması gerekir, ancak bu, döngü israfına neden olabilir. Bunu düzeltmek için dinamik programlama kullanılabilir ve bu durumda her bir alt problemin çözümü hatırlanır, bu aynı değeri birkaç kez tekrarlamak yerine kullanmak.
3. Sezgisel algoritmalar
Çözümler bularak ayırt edilirler ve hatta en iyi cevapların bulunacağını garanti etmezler, bu nedenle yaklaşık algoritmalar olarak kabul edilebilirler. Bunlar, normal bir yoldan bir çözüm bulmanın imkansız olduğu düşünüldüğünde kullanılabilir. Buluşsal yöntemler, aşağıda açıklanacak kullanımları sağlar. İçinde planlama da elektrikli ya da dijital sistemler tanımlamak için kullanılan tasarım olarak, bunlar, kısa bir süre içinde program etkinlikleri için kullanılır ve simülasyonu belli prosedürlere doğrulamak için kullanılır.
4. Geriye dönük izleme algoritmaları
Olası bir çözüm bulmak için derin bir araştırma yapılan bulmacalar, labirentler veya benzeri parçalar gibi sorunları çözen yinelemeli stratejiler olarak bilinirler. Adı, sonuç bulmak için yapılan araştırmalarda alternatifleri test edebilmek için her zaman bir önceki noktaya döndüğünü ifade eder. Bunlar genellikle ekonomi, piyasalar, fiyat işaretleri, belirli operasyonlar ve hatta toplumun kendisi üzerindeki etkilerini gözlemlemek için iptal edilir.
5. Açgözlü algoritma
Yok edici veya tatlı diş olarak bilinir ve optimizasyon problemlerinde uygulanabilir, bu algoritmanın her adımında, küresel çözümlerin en iyisini elde etmek için mantıklı ve optimal bir seçim yapılır. Bununla birlikte, bir karara varıldığında, gelecekte bunu düzeltmek veya değiştirmek için kesinlikle hiçbir şey yapılamayacağı dikkate alınmalıdır. Bu işlemin adı budur çünkü her adımda "yutabilen" en iyi fraksiyon, daha sonra ne olacağı konusunda endişelenmeden seçilir.
Bir algoritmanın özellikleri
Çeşitli yazarlar, matematiksel modelleri kullanırken algoritmaları resmi bir şekilde tanımlamaya çalıştılar. Bununla birlikte, bu örnekler, büyük miktarda veri dağıtımı üzerinde çalışırken, sayıları, sembolleri ve bazı grafikleri içeren özel bir bilgi türü ile yakından ilgilidir. Genel olarak, tanımların her birinin ortak katılımı aşağıdaki üç özellikte özetlenmiştir:
Sorun bildirimi
Bilgisayar aracılığıyla problem çözme, bir problemin tanımlandığı ve onu çözebilecek bir programın geliştirilmesine izin verilen bir süreçten oluşabilir. Bu süreç, problemin analizini, bir algoritmanın tasarımını ve bir programa dönüştürülmesini, bunun yanı sıra performansını ve doğrulanmasını gerektirir. İlk iki adım, bu süreçte en karmaşık olanıdır, ancak sorunu inceledikten ve çözebilecek bir algoritma elde ettikten sonra, göreviniz öncelikle onu istenen programlama diline çevirmeye dayanır.
Genel çözümün analizi
Sorun tanımlandıktan sonra, aşağıdakileri analiz etmenin zamanı gelmiştir:
- Bilgi onlar bize bilet.
- İstenilen sonuçlar.
- Çalışma alanı, ifadeler veya diğer gerekli unsurlar.
Algoritmaların analizi, herhangi bir algoritmanın belirli bir hesaplama problemini çözmek için ihtiyaç duyduğu kaynaklar için teorik hesaplamalar sağladığından, daha geniş hesaplama karmaşıklığı teorisinin en önemli parçası olarak bilinir. Teorik bir araştırma yürütürken, yeterince büyük bir girdi boyutu elde etmek için komplikasyonlarını asimptotik anlamda hesaplamak yaygındır. Bu amaçla teta ve omega notasyonları ile birlikte asimptotik üst sınır kullanılır ve asimptotik olmayan ölçümün bilgisayarla yapılabileceği unutulmamalıdır.
Kesin verimlilik ölçümleri, algoritmaları gerçekten kullananlar için gerçekten kullanışlıdır, çünkü daha fazla hassasiyete sahiptirler ve bu, yürütmek için gerekecek zamanı belirlemelerine olanak tanır. Video oyunu yaratıcıları gibi bazı kişiler için gizli sabit, başarı ile başarısızlık arasında büyük bir fark anlamına gelebilir. Zaman değerlendirmeleri, belirli bir adımın nasıl tanımlandığına bağlı olabilir ve analizin anlamlı olması için, zamanın bir sabit ile belirgin şekilde sınırlandırılmasının garanti edilmesi gerekir.
Algoritmanın detaylandırılması
Bir operasyonun geliştirilmesini gerçekleştirmek için, bir sorunun çözümüne uymak için bir dizi prosedürün gerçekleştirilmesi önemlidir. Başlamak için , zorluğun önceden bir analizi yapılmalıdır ve bu, herhangi bir algoritma gerçekleştirilmeden çok önce problemin gerçek işleyişini gösteren bir çalışma yoluyla yapılır. Bu nedenle, gereksinimlerin tanımı değerlendirilir, bu adımda çözülmesi gereken sorunların ne olduğuna dair net bir fikre sahip olmalısınız, iki sayının toplamı, bir sayı listesinin sıralaması vb.
Daha sonra, modüllerin ilgili tanımlaması yürütülür, çünkü algoritmaların doğru uygulanması, yukarıda tanımlanan gereksinimlere olası çözümler sağlamasına bağlıdır.
Son olarak hesaplama, bir bilgisayar tarafından anlaşılabilir bir programlama dilinde gerçekleştirilir, böylece modellediği komutları anlayabilir ve böylece bunları gerçekleştirerek beklenen sonuca ulaşabilir. Bu son prosedürde, birbiri ardına sıralanan ve yerleşik gereksinimleri çözmeyi başaran bir dizi talimattan oluşan bir programdan bahsetmek mümkündür.
Sıralı zamanda, algoritmaların işlevlerini ayrık bir zamanda yerine getirdiğini ve geçerli kabul edilen her bir girdideki hesaplama durumlarının dizilerini tanımlamaya çalıştığını belirtmek önemlidir. Soyut durumda, bu işlemler bağımsız unsurlardır ve içlerinde ilkel düzen yapılarının izomorfizm altında değişmez hale gelebileceği düşünülmektedir. Sınırlı keşifte, bir durumdan diğerine geçişler tamamen kalıcı ve sonlu bir açıklama ile kurulur; burada bir durum ile diğeri arasında sadece mevcut durumun sınırlı sayıda terimi hesaba katılır.
Algoritmaların genellikle programlama dilleri "sözde kodlar" yoluyla, olağan dil ve hatta iyi bilinen akış diyagramları aracılığıyla ifade edildiği de gözden kaçırılmamalıdır. Benzer şekilde, algoritmaların, veriyi bit dizileri olarak temsil etmeleri nedeniyle hesaplamada temel bir rol oynadığını belirtmek önemlidir. Başka bir açıdan, bir programın, belirli etkinlikleri yeterince yerine getirmek için izlemesi gereken belirli adımları bilgisayara ifade eden algoritma olduğu tanımlanır. Öte yandan, sözde kod yazmayı öğrenmek programlamayı kolaylaştırır ve bu nedenle daha sonra açıklanacaktır.
Programlama dilleri, iyi tanımlanmış gramer kurallarına sahip oldukları için resmi veya yapay bir dil olarak bilinir, programcıya bir dizi talimatı veya amaca yönelik algoritmalar şeklinde düzenlemeler dizisini metin haline getirme becerisine sahiptir. bilgisayarın fiziksel ve mantıksal davranışı ile ilgili bir kontrol sağlamak için bu şekilde çeşitli bilgi türlerine ulaşılabilir. Bir programlama dili aracılığıyla yazılan bu ilkeler setine program denir.
Programlama dilleri genellikle, dilin mevcut yapılarını ve anlamlarını tanımlayan bir dizi sembol ve gramer ve anlamsal kurallardan oluşur. Başka bir bakış açısıyla, bilgisayar dilleri de programlama dilleri dahil, bunun açık bir örneğidir HTML, farklı belgelerin içeriği yürütmek için belirli talimatları yerine getirir şeydir. Programlama dili, çeşitli koşullar altında belirli bir yazılım tarafından çalıştırılması gereken bu verilerin kesin olarak belirtilmesine izin verebilir.
Öte yandan, sözde kod, gerçek bir programlama dilinin temel kurallarını kullanan, ancak bir makine aracılığıyla okumak yerine insan okuması için tasarlanmış, diğer türden bağımsızlık sağlayan algoritmik açıklama dilidir . programlama dili. Sözde kod, sistem kodları, değişken bildirimler ve hatta bazı alt rutinler gibi, algoritmanın insan tarafından anlaşılması için gerekli olmayan ayrıntıları göz ardı eder. Bu şekilde, programlama dili kendisini doğal dilde kesin tanımlamalarla veya kompakt matematiksel notasyonlarla tamamlamaya çalışır.