Switch to full style
Forum dyskusyjne, na którym można dyskutować na wszelkie tematy, których nie dotyczą pozostałe fora. Do testów proszę używać forum testowego. Proszę już nie zgłaszać stron do oceny. Za dużo było spamu.
Odpowiedz

Algorytmy wyszukiwania

11 lipca 2005, o 16:50

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

11 lipca 2005, o 20:01

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

12 lipca 2005, o 00:59

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

12 lipca 2005, o 10:08

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

12 lipca 2005, o 10:10

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

12 lipca 2005, o 10:29

Algorytmy wyszukiwania

12 lipca 2005, o 20:56

Odpowiedz