[]

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.

 
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.
  • choi bounge  (13.08.12 20:03:46 ~ 20:05:05) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.