Strona 1 z 1

Algorytmy wyszukiwania

PostNapisane: 11 lipca 2005, o 16:50
przez Wydra707
Interesują mnie argorytmy optymalnego wyszukiwania danych, a konkretnie odnajdowania elementów najczęściej występujących w danym zbiorze (np. słów, które najczęściej powtarzają się w tekście). Chciałbym zastosować to w skrypcie, ale nie interesuje mnie gotowiec - raczej zapoznanie się z procesem od strony samej koncepcji. Lub "z procesami", bo jak przypuszczam, metod jest wiele. W miarę możliwości bez wyższej matematyki...

Czy ktoś zna jakieś przystępne źródło na ten temat, zdatne dla amatora?

Pozdrawiam
Paweł Rajewski

Algorytmy wyszukiwania

PostNapisane: 11 lipca 2005, o 20:01
przez januzi
poszukaj informacji o drzewach, avt, B, zrownowazonych
w php daloby sie tego uzyc, ale wymagaloby wczytania drzewka i potem dopiero szukania
mozna tez posluzyc sie stogami lub listami
a chyba najlepsze rozwiazanie:
$slowo = get_slowo() ;
$tab[$slowo]++ ;
i juz masz tablice ze slowami i ich iloscia, wystarczy tylko posortowac po wartosci przypisanej do klucza (czyli po ilosci wystapien) i masz ktore slowa sa najczestsze

Algorytmy wyszukiwania

PostNapisane: 12 lipca 2005, o 00:59
przez Wydra707
Eeee..? A można by prosić jaśniej? Drzewa, stogi... to chyba nie te, co na polu?

Chodzi mi nie o to, jak zrobić coś w PHP (bo go nie znam i powyższe zapisy nic mi nie mówią), ale o samą metodę - zrozumienie idei, algorytmu takiego wyszukiwania - możliwie optymalnego. A wtedy już sam napiszę sobie skrypt (chodziłoby o VBScript, ale to akurat bez znaczenia).

Pozdrawiam
Paweł Rajewski

Algorytmy wyszukiwania

PostNapisane: 12 lipca 2005, o 10:08
przez januzi
http://pascal.lo2.opole.pl/drzewo_licznikowe.html
http://www.astagor.net/putinf/data/algo ... -Heap.html
o ile w tym wynalazku mozna tworzyc zmienne dynamiczne, jesli nie mozna, to pozostaje tablica o odpowiedniej strukturze:
[element][liczba][polozenie_nastepnika][element][liczba][polozenie_nastepnika] ... [element][liczba][polozenie_nastepnika]
numerujesz komorki tablicy od 0, wiec element1 jest w 0, liczba w 1, polozenie_nastepnika w 2, powiedzmy ze nastepnik bedzie w 6, wiec w 6 masz element, w 7 jego liczbe, w 8 kolejny nastepnik

drzewo robisz tak, aby posrodku byl wyraz na M lub jakis wyraz na litere ze srodka alfabetu (dzieki temu drzewo bedzie zrownowazone), dostajesz nowy wyraz, porownujesz go z pierwszym elementem drzewa i albo na lewo jesli < albo na prawo jesli >. Robisz tak, az dojedziesz do konca i nie znajdziesz niczego, albo gdy znajdziesz juz ten sam wyraz. Jesli nic nie ma, to wstawiasz wyraz w tym miejscu gdzie znalazles koniec. Jesli jest, to +1 do liczby. Po skonstruowaniu drzewa zabierasz sie za szukanie, tak samo jak dodawanie, ale bez ostatniej operacji doklejania/dodawania. Nie ma ? to komunikat o tym ze nie ma. Jest ? to komunikat o ilosci. Natomiast liczbe wystapien zapisujesz najpierw jako 0, potem przegladasz drzewo i patrzysz ktora liczba jest wieksza niz obecna, jesli jest wieksza, to ustawiasz slowo oraz liczbe wystapien na wartosci w aktualnie ogladanym elemencie drzewa. Po dojechaniu do konca masz najczestsze slowo oraz liczbe jego wystapien w tekscie.

Algorytmy wyszukiwania

PostNapisane: 12 lipca 2005, o 10:10
przez DEXTER:)
Myślę że najprostszy jest przykład Januzi'ego. Skrypt dostaje słowo/a, które ma szukać i liczy ilość znalezionych. Jednak przydało by się obliczać gęstość, bo w długim tekście może być więcej wskazanych słów, tylko dlatego że jest długi.

Dodatkowo myślę, że warto używając funkcji substr() obciąć kilka znaków z przodu i na końcu by podać funkcji nowe słowa bez końcówek, ale przyznać za znalezione wyniki mniej "punktów" :wink:

Sam nigdy nie pisałem takiego algorytmu, kombinuję na poczekaniu :)

Januzi zapodał byś linkami. Mam o wskazanych algorytmach conieco w książce, ale przyda się na przyszłość.

Algorytmy wyszukiwania

PostNapisane: 12 lipca 2005, o 10:29
przez januzi

Algorytmy wyszukiwania

PostNapisane: 12 lipca 2005, o 20:56
przez Wydra707