[]
Arama algoritması -gibi- (php)
Şimdi, elimde iki adet takımlar tablosu var. Burada dünyanın bütün takımlarının ismi yazıyor.
Ancak, bir listede Stuttgart yazıyorsa öbüründe Stutt. yazabiliyor.
Ya da birinde B. Dortmund, diğer listede Dortmund şeklinde yazılı olabiliyor.
Manchester United, Man. Utd. vs. vs. diye uzat gider bu farklı isimler.
İstediğim şey, bu isimlerin eşleştirmesini yapmak. %100'ünün olmasa da, büyük çoğunluğunun eşleştirmesini bir algoritmayla yapabilmek istiyorum.
Algoritmayı kolaylaştırıcı şey: lig isimleri. Her iki listede de lig isimleri harfi harfine örtüşüyor. Bu da şöyle bir kolaylık sağlayacak, Man. Utd.'yi eşleştirirken en azından diğer tablodaki yalnızca 20 takıma bakacak ve onlar arasından bir seçim yapacak sadece.
Ama daha önce hiçbir arama, eşleştirme vs. bir algoritma yazmadığım için mantığı nasıl kursam bilmiyorum.
Örneğin; önce tam karşılıyor mu diye bakar, tam karşılamıyorsa .'ları kaldırıp en çok ortak harfe sahip takımla eşleştirir falan filan.
amaç: 1. tabloda bir fazla sütun açıp, 2. tablodaki takım isimlerinin tamamını bu sütunlara geçirtmek. (yani 1. Tabloda =
İlk sütun --- İkinci Sütun
Man. Utd --- Manchester United
)
olsun istiyorum.
Ancak, bir listede Stuttgart yazıyorsa öbüründe Stutt. yazabiliyor.
Ya da birinde B. Dortmund, diğer listede Dortmund şeklinde yazılı olabiliyor.
Manchester United, Man. Utd. vs. vs. diye uzat gider bu farklı isimler.
İstediğim şey, bu isimlerin eşleştirmesini yapmak. %100'ünün olmasa da, büyük çoğunluğunun eşleştirmesini bir algoritmayla yapabilmek istiyorum.
Algoritmayı kolaylaştırıcı şey: lig isimleri. Her iki listede de lig isimleri harfi harfine örtüşüyor. Bu da şöyle bir kolaylık sağlayacak, Man. Utd.'yi eşleştirirken en azından diğer tablodaki yalnızca 20 takıma bakacak ve onlar arasından bir seçim yapacak sadece.
Ama daha önce hiçbir arama, eşleştirme vs. bir algoritma yazmadığım için mantığı nasıl kursam bilmiyorum.
Örneğin; önce tam karşılıyor mu diye bakar, tam karşılamıyorsa .'ları kaldırıp en çok ortak harfe sahip takımla eşleştirir falan filan.
amaç: 1. tabloda bir fazla sütun açıp, 2. tablodaki takım isimlerinin tamamını bu sütunlara geçirtmek. (yani 1. Tabloda =
İlk sütun --- İkinci Sütun
Man. Utd --- Manchester United
)
olsun istiyorum.
hizalama yapabilirsin.
en.wikipedia.org
en.wikipedia.org
www.biorecipes.com
kodları kendin yazmana gerek yok. hazır kütüphaneler bulursun. biojava kullanıyordum ben. ama sadece protein alfabesiyle kısıtlayacak o seni. tüm harfleri içermesi için paketin içinde alfabenin ve matrixlerin olduğu dosyaları bulup değiştirmen gerekecek. internette biraz ararsan başka paketler de bulabilirsin sanırım. biraz uğraşırsan algoritmayı kendin yazması da zor olmaz diye tahmin ediyorum. hiç denemedim.
hizalayınca şöyle bir şey olacak aşağı yukarı:
B. Dortmund
---||||||||
Dortmund
ya da
B. Dortmund
Dortmund
paket kullanırsan yüzde kaçının eşleştiği/eşleşmediği bilgisine ulaşabilirsin. kullanmazsan bunu da kendin kodlaman gerekecek. daha sonra şu kadarı eşleşenleri kabul et şu kadarı eşleşmeyenleri kabul etme gibi kendin koşullar belirlersin.
liglerle kısıtlamak için de kesin daha iyi bir çözüm vardır ama 2 tane map geliyor aklıma sadece. biri bir listeyi diğeri diğer listeyi içerek şekilde. key olarak takımın adını, value olarak ligin adını koyarsın. daha sonra hizalarken sadece liglerin adı aynı olanları hizalatırsın. her lig için bir array/arraylist yapmak da çözüm olabilir eğer elindeki listeler buna izin verecek şekildeyse.
edit: cevapta boşluklar görünmediği için hizalamalar kaymış. öyle görünmeyecek o. verdiğim linklerde de örnek var gerçi zaten.
en.wikipedia.org
en.wikipedia.org
www.biorecipes.com
kodları kendin yazmana gerek yok. hazır kütüphaneler bulursun. biojava kullanıyordum ben. ama sadece protein alfabesiyle kısıtlayacak o seni. tüm harfleri içermesi için paketin içinde alfabenin ve matrixlerin olduğu dosyaları bulup değiştirmen gerekecek. internette biraz ararsan başka paketler de bulabilirsin sanırım. biraz uğraşırsan algoritmayı kendin yazması da zor olmaz diye tahmin ediyorum. hiç denemedim.
hizalayınca şöyle bir şey olacak aşağı yukarı:
B. Dortmund
---||||||||
Dortmund
ya da
B. Dortmund
Dortmund
paket kullanırsan yüzde kaçının eşleştiği/eşleşmediği bilgisine ulaşabilirsin. kullanmazsan bunu da kendin kodlaman gerekecek. daha sonra şu kadarı eşleşenleri kabul et şu kadarı eşleşmeyenleri kabul etme gibi kendin koşullar belirlersin.
liglerle kısıtlamak için de kesin daha iyi bir çözüm vardır ama 2 tane map geliyor aklıma sadece. biri bir listeyi diğeri diğer listeyi içerek şekilde. key olarak takımın adını, value olarak ligin adını koyarsın. daha sonra hizalarken sadece liglerin adı aynı olanları hizalatırsın. her lig için bir array/arraylist yapmak da çözüm olabilir eğer elindeki listeler buna izin verecek şekildeyse.
edit: cevapta boşluklar görünmediği için hizalamalar kaymış. öyle görünmeyecek o. verdiğim linklerde de örnek var gerçi zaten.
- choi bounge (13.08.12 20:03:46 ~ 20:05:05)
1