Dışarıda bulduğum bir gerçek, Google'ın aslında biyoinformatik tarafından yönetiliyor olmasıdır ('kay, bunu komik buluyorum çünkü ben bir biyoinf… şeyim). Açıklamama izin ver.
Biyoinformatik, erken dönemlerde devasa dizilerdeki küçük metinleri çok hızlı arama konusunda zorluk yaşadı. Bizim için “devasa ip” elbette DNA'dır. Genellikle tek bir DNA değil, farklı türlerden / bireylerden birkaç DNA'nın veri tabanı. Küçük metinler proteinler veya bunların genetik karşılığı olan bir gendir. Hesaplamalı biyologların ilk çalışmalarının çoğu, genler arasındaki homolojileri bulmakla sınırlıydı. Bu, yeni bulunan genlerin işlevini, halihazırda bilinen genlerle benzerliklere dikkat çekerek oluşturmak için yapılır.
Şimdi, bu DNA dizileri gerçekten çok büyüyor ve (kayıplı!) Aramanın son derece verimli bir şekilde yapılması gerekiyor. Modern sicim arama teorisinin çoğu bu nedenle hesaplamalı biyoloji bağlamında geliştirildi.
Ancak, oldukça uzun bir süre önce, geleneksel metin araması tükenmişti. Alt doğrusal zamanda, yani her bir karaktere bakmadan büyük dizeleri aramaya izin veren yeni bir yaklaşıma ihtiyaç vardı. Bunun, büyük dizgiyi önceden işleyerek ve üzerinde özel bir dizin veri yapısı oluşturarak çözülebileceği keşfedildi. Bu tür birçok farklı veri yapısı önerilmiştir. Her birinin kendi güçlü ve zayıf yönleri vardır, ancak özellikle dikkat çekici olanı vardır çünkü sabit zamanda bir aramaya izin verir. Şimdi, Google'ın faaliyet gösterdiği büyüklük sırasına göre bu artık kesinlikle doğru değil çünkü sunucular arasında yük dengeleme, ön işleme ve diğer bazı karmaşık şeyler hesaba katılmalıdır.
Ancak özünde, sözde q-gram indeksi , sabit zamanda bir aramaya izin verir. Tek dezavantaj: Veri yapısı gülünç derecede büyüyor. Esasen, q karaktere kadar (dolayısıyla adı) dizelerin aranmasına izin vermek için , q harflerinin olası her kombinasyonu için bir alan içeren bir tablo gerektirir (yani, q S , burada S alfabenin boyutudur , 36 (= 26 + 10)) diyelim. Ek olarak, dizine eklenen dizedeki her harf konumu için (veya google söz konusu olduğunda, her web sitesi için) bir alan olmalıdır.
Sırf boyutunu azaltmak için, Google muhtemelen birden indeksleri kullanacaktır (aslında, onlar yapmak , yazım düzeltme teklif hizmetlerine). En üstte olanlar karakter düzeyinde değil, bunun yerine kelime düzeyinde çalışır. Bu, q'yu azaltır, ancak S'yi sonsuz derecede büyütür, bu nedenle sonsuz sayıda farklı sözcükle başa çıkmak için karma ve çarpışma tabloları kullanmak zorunda kalacaklar.
Bir sonraki aşamada, bu karma kelimeler diğer dizin veri yapılarına işaret edecek ve bu da web sitelerine işaret eden karakterleri karma hale getirecektir.
Uzun lafın kısası, bu q -gram indeksi veri yapıları, Google'ın arama algoritmasının tartışmasız en merkezi kısmıdır. Ne yazık ki, q -gram indekslerinin nasıl çalıştığını açıklayan teknik olmayan iyi belgeler yok . Böyle bir dizinin nasıl çalıştığına dair bir açıklama içeren bildiğim tek yayın… ne yazık ki, benim lisans tezim .