Nesneler Kutulara Nasıl Dağıtılır? Dört Temel Kombinatorik Senaryo

nesneler-kutulara-nasil-44

Bir çekmecedeki çorapları bölmelere, sunucudaki görevleri işlemcilere veya şekerleri çocuklara dağıttığımızı düşünelim. Bu örneklerin hepsi aynı soruya dönüşür: $n$ nesne, $m$ kutuya kaç farklı biçimde yerleştirilebilir? Ancak cevabı bulmadan önce nesnelerin ve kutuların ayırt edilip edilmediğini bilmeliyiz. Küçük bir ayrıntı gibi görünen bu özellik, sonucu üstel sayılardan bölüşüm sayılarına kadar değiştirebilir.

Devamı...

Mükemmel Sayılar ve Kaprekar Sayıları: Aritmetiğin İki İlginç Ailesi

Bazı sayılar yalnızca miktar belirtmekle yetinmez; bölenleriyle veya kareleriyle şaşırtıcı ilişkiler kurar. Mükemmel sayılar, kendileri hariç pozitif bölenlerinin toplamına eşit olurken Kaprekar sayıları, kareleri uygun biçimde parçalandığında yeniden kendilerini üretir. Gelin bu iki sayı ailesinin kurallarını, örneklerini ve Python ile nasıl bulunabileceklerini inceleyelim.

Devamı...

Modüler Aritmetik ve Hızlı Üs Alma: Kriptografinin Matematik Motoru

moduler-aritmetik-ve-31

Günlük matematikte sayılar büyüdükçe hesaplar zorlaşır; kriptografide ise sayılar yalnızca büyümez, adeta gökdelen olur. Binlerce bitlik anahtarlarla çalışırken sıradan üs alma yöntemleri bilgisayarı terletebilir. Modüler aritmetik ve hızlı üs alma, bu devasa işlemleri yönetilebilir parçalara ayırarak RSA ve Diffie–Hellman gibi sistemlerin çalışmasını sağlayan temel araçlardır.

Devamı...

Mersenne Sayıları: Dev Asalların Peşindeki Kısa Formül

Bir sayının milyonlarca basamağı varsa onun asal olup olmadığını nasıl anlarsınız? Bütün bölenleri sırayla denemek, evrendeki sabrı tüketebilecek kadar pahalıdır. Neyse ki Mersenne sayıları, özel biçimleri sayesinde büyük asal arayışını ulaşılabilir hâle getirir. Üstelik bu arayış, sayı teorisinden dağıtık hesaplamaya uzanan heyecanlı bir maceradır.

Devamı...

Mastermind Çözücüsü: Sınırlı Tahminle Gizli Kodu Bulan Algoritma

Mastermind, birkaç renkli pimin masum görünümü altında ciddi bir arama problemi saklar. Oyuncunun amacı, sınırlı sayıdaki tahminle gizli kodu bulmaktır. Her tahminden sonra alınan “doğru renk ve doğru konum” ile “doğru renk, yanlış konum” ipuçları, olası kodları adım adım elemeyi sağlar. Gelin bu mantığı bilgisayara öğretelim ve şansa güvenmek yerine sistematik düşünen bir çözücü geliştirelim.

Devamı...

Luhn Algoritması ile Kart Numarası Doğrulama

Bir kart numarasını yanlış yazdığınızda sistemin hatayı ödeme kuruluşuna ulaşmadan fark etmesi sihir değildir. Çoğu kart numarası, basit ama etkili bir sağlama yöntemi olan Luhn algoritması ile kontrol edilebilir. Gelin algoritmanın matematiksel mantığını inceleyelim ve JavaScript ile yeniden kullanılabilir bir doğrulayıcı geliştirelim.

luhn-algoritmasi-ile-54

Devamı...

K-Elemanlı Alt Kümeleri Sistematik Olarak Üretme

Bir kümeden tam olarak $k$ eleman seçmenin kaç farklı yolu olduğunu bilmek kolaydır; asıl eğlence, bu seçimlerin tamamını eksiksiz, tekrarsız ve belirli bir sırada üretmekle başlar. Kombinasyon üretimi; arama algoritmalarından test verisi hazırlamaya, takım oluşturmadan özellik seçimine kadar pek çok alanda karşımıza çıkar. Bu yazıda k-elemanlı alt kümeleri üretmenin üç sistematik yöntemini inceleyeceğiz.

Devamı...

Güvercin Yuvası İlkesi: Basit Bir Fikirle Şaşırtıcı Kanıtlar

Bir kümesteki yuvalardan daha fazla güvercin varsa en az bir yuvayı paylaşmak zorunda kalırlar. Kulağa çocuk oyuncağı gibi gelen bu gözlem; sayı teorisinden çizge kuramına, algoritma analizinden günlük yaşam problemlerine kadar şaşırtıcı derecede güçlü sonuçlar üretir. Matematikte buna Güvercin Yuvası İlkesi denir ve çoğu zaman aranan nesneyi göstermeden, yalnızca onun var olmak zorunda olduğunu kanıtlar.

guvercin-yuvasi-ilkesi-57

Devamı...

Derangement Problemi: Herkes Yanlış Sandalyeye Otursun!

derangement-problemi-herkes-70

Bir davette herkes şapkasını vestiyere bırakıyor ve çıkışta şapkalar rastgele dağıtılıyor. Acaba hiç kimsenin kendi şapkasını almadığı kaç farklı dağıtım vardır? Kombinatorikte derangement, Türkçede düzensizleştirme olarak bilinen problem tam olarak bunu sorar. İlk bakışta yalnızca permütasyon üretip kontrol etmek yeterli görünse de teorik yaklaşım çok daha hızlı ve öğreticidir.

Devamı...

Collatz Problemi: 3n+1 ile Sonsuzluğa Açılan Matematik Bilmecesi

Bir pozitif tam sayı seçin. Çiftse ikiye bölün, tekse üçle çarpıp bir ekleyin ve aynı işlemi tekrarlayın. Çocuk oyuncağı kadar basit görünen bu tarif, matematikçilerin onlarca yıldır çözemediği Collatz varsayımını oluşturur. Bilgisayarlar akıl almaz büyüklükte sayıları sınamış olsa da her başlangıç değerinin sonunda 1’e ulaşacağını kanıtlayan genel bir ispat hâlâ bulunamamıştır.

Devamı...

Çinlilerin Kalan Teoremi: Parçalı Bilgiden Tek Bir Sayıya

Bir sayıyı doğrudan bilmiyor, fakat farklı sayılara bölündüğünde bıraktığı kalanları biliyor olabilirsiniz. İlk bakışta bu bilgiler ayrı yapboz parçaları gibi görünür. Çinlilerin Kalan Teoremi, modüller uygun olduğunda bütün parçaları birleştirerek tek ve tutarlı bir çözüm üretir. Üstelik bu çözüm yalnızca teorik bir merak değildir; kriptografi, takvim hesapları, paralel işlem ve bilgisayar aritmetiğinde karşımıza çıkar.

Devamı...

Catalan Sayıları: Parantezlerden İkili Ağaçlara Uzanan Sayma Macerası

Bazı sayı dizileri matematiğin gizli aktörleri gibidir: Farklı görünen problemlerde tekrar tekrar sahneye çıkarlar. Catalan sayıları da dengeli parantezlerden çokgenlere, ikili arama ağaçlarından dağ yollarına kadar şaşırtıcı sayıda yapıyı sayar. İlk terimleri $1, 1, 2, 5, 14, 42, 132$ olan bu dizi, “Kaç farklı geçerli yapı oluşturabilirim?” sorusunun en renkli cevaplarından biridir.

Devamı...

Armstrong Sayıları: Basamaklardan Doğan Matematiksel Sihir

Bazı sayılar sıradan görünürken basamaklarına ayrıldıklarında küçük bir matematik gösterisi yapar. Armstrong sayıları da tam olarak bu gruptadır: Her basamağın belirli bir kuvvetini alıp topladığımızda sayının kendisine geri döneriz. Bu özellik hem basamak işlemlerini öğrenmek hem de döngü, fonksiyon ve algoritma karmaşıklığı pratiği yapmak için harika bir bahanedir.

Devamı...

Antik Dünyadan Rönesans’a: Caesar, Polybius ve Vigenère Şifreleri

Günümüzde şifreleme denince akla devasa asal sayılar ve karmaşık algoritmalar geliyor. Oysa kriptografinin temelleri, harfleri kaydırmak veya bir tabloya yerleştirmek kadar basit fikirlerle atıldı. Caesar, Polybius ve Vigenère şifreleri yalnızca tarihî merak konusu değildir; modern şifrelemenin neden anahtar, anahtar uzayı ve istatistiksel direnç gibi kavramlara ihtiyaç duyduğunu gösteren harika laboratuvarlardır.

antik-dunyadan-ronesansa-25

Devamı...

Zekâ Soruları Platformu: H5P, Moodle ve Özel Soru Bankasıyla Akıllı Bir Sistem Kurmak

Zekâ soruları yalnızca “Doğru cevap hangisi?” demekten ibaret değildir; süre yönetimi, ipucu kullanımı, zorluk dengesi ve çözüm yolunun açıklanması da deneyimin parçasıdır. H5P’nin etkileşimli içeriklerini, Moodle’ın öğrenme yönetimi yeteneklerini ve özel bir soru bankasının esnekliğini birleştirerek hem eğlenceli hem de ölçülebilir bir zekâ soruları platformu geliştirebiliriz.

Devamı...

Yığın ve Kuyruk Veri Yapılarının Temelleri: LIFO ve FIFO’yu Kodlamak

Bir kafede sıraya giren müşterileri ve masanın üzerinde üst üste duran tabakları düşünün. Müşteriler geliş sırasına göre hizmet alırken tabaklardan önce en üstteki kaldırılır. Bilgisayar biliminde bu iki gündelik düzen, kuyruk (queue) ve yığın (stack) veri yapılarıyla modellenir. Basit görünmelerine rağmen işletim sistemlerinden tarayıcılara, oyunlardan mesajlaşma servislerine kadar pek çok yazılımın arkasında bu yapılar çalışır.

Devamı...

Üstel Dağılıma Göre Rastgele Sayı Üretimi

Bir sunucuya gelecek sıradaki isteğin kaç saniye sonra ulaşacağını veya bir elektronik parçanın ne kadar süre çalışacağını simüle etmek istediğimizi düşünelim. Sıradan rastgele sayılar çoğunlukla eşit olasılıklıdır; ancak gerçek hayattaki bekleme süreleri genellikle üstel dağılıma uyar. Neyse ki düzgün dağılımdan gelen tek bir sayı ve biraz logaritma ile bu davranışı taklit edebiliriz.

ustel-dagilima-gore-59

Devamı...

Üretim Fonksiyonları: Kombinatorikten Cebire Açılan Gizli Geçit

Bir problemi çözmek için bazen nesneleri tek tek saymak yerine onları bir cebirsel ifadenin katsayılarına saklamak daha akıllıcadır. Üretim fonksiyonları tam olarak bunu yapar: Bir diziyi kuvvet serisine dönüştürür, sayma problemlerini toplama ve çarpma gibi cebirsel işlemlerle çözmemizi sağlar. Kulağa matematiksel bir sihir numarası gibi gelse de yöntemin arkasında oldukça sistemli bir mantık vardır.

Devamı...

Tartı Problemi ve Denge Algoritmaları: Ağırlıkların Gizli Matematiği

Elinizde yalnızca birkaç ağırlık olduğunu düşünün. Buna rağmen 1 gramdan belirli bir üst sınıra kadar her tam sayı değerini tartabilir misiniz? İlk bakışta çok sayıda ağırlık gerekiyormuş gibi görünür. Oysa ağırlıkları doğru seçtiğimizde her parça, bir sayı sisteminin basamağına dönüşür. Tartı problemi; ikili sistem, dengeli üçlü sistem ve açgözlü algoritmaların fiziksel dünyadaki şaşırtıcı bir buluşma noktasıdır.

Devamı...