-
X-Received: by 10.49.15.38 with SMTP id u6mr81496qec.8.1358328541366; Wed, 16 Jan
2013 01:29:01 -0800 (PST)
X-Received: by 10.49.15.38 with SMTP id u6mr81496qec.8.1358328541366; Wed, 16 Jan
2013 01:29:01 -0800 (PST)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.unit0.net!feeder.erje.net!us.feeder.erje.net!news.glo
rb.com!f6no1428376pbd.1!news-out.google.com!s9ni26pbb.0!nntp.google.com!f6no142
8367pbd.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 16 Jan 2013 01:29:01 -0800 (PST)
In-Reply-To: <2...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.229.34.123;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 89.229.34.123
References: <kceu17$8cf$1@node1.news.atman.pl>
<c...@g...com>
<kckmci$3s2$1@node1.news.atman.pl>
<f...@g...com>
<4...@g...com>
<6...@g...com>
<c...@g...com>
<9...@g...com>
<1...@g...com>
<2...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4...@g...com>
Subject: Re: algorytm stringi
From: "M.M." <m...@g...com>
Injection-Date: Wed, 16 Jan 2013 09:29:01 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Lines: 63
Xref: news-archive.icm.edu.pl pl.comp.programming:201677
[ ukryj nagłówki ]W dniu środa, 16 stycznia 2013 09:29:22 UTC+1 użytkownik firr kenobi napisał:
> nie rozumiem, jak wogole wygladalo by
> takie indeksowanie np na przykladzie zaindeksowania 'robinsona cruzoe' (okolo
> 500kb)? robi sie cos w rodzaju slownika/mapy
> ze slowami i offsetami w pliku?
Też nie mam ani szczegółowej wiedzy, ani doświadczeń praktycznych z
tego typu algorytmami. Wyobrażam sobie to mniej/więcej w ten sposób...
Mamy tekst:
char text[M];
Mamy długość prefixa:
const int N = 6;
Mamy parę:
struct Pair {
unsigned int key; // suma-klucz
unsigned int pos; // pozycja w text.
Pair *next;
};
Mamy hash-table:
Pair *hash_table[S];
Mamy klucze, po jednym kluczu dla znaku alfabetu:
const unsigned int keys[256] = {rand,rand...rand};
Inicjujemy hash-table:
unsigned int key = 0;
for( int i=0 ; i<N ; i++ )
key ^= keys[ text[i] ];
for( int i=N ; i<M ; i++ ) {
Pair *pair = new Pair( key , i-N , NULL );
const unsigned int entry = key % S;
insert( pair , hash_table , entry );
key ^= text[i-N] ^ text[i];
}
Potem mamy wzorzec:
char pattern[N+R];
Liczymy klucz:
key = 0;
for( int i=0 ; i<N ; i++ )
key ^= keys[ pattern[i] ];
Liczymy punkt wejścia do hash-table:
entry = hash_table + key % S;
while( entry ) {
print( entry->pos ); // pozycje pod którymi może zaczynać się wyszukiwany tekst
enetry = entry->next;
}
Pozdrawiam
Następne wpisy z tego wątku
- 16.01.13 15:37 firr kenobi
- 16.01.13 15:43 firr kenobi
- 16.01.13 19:36 M.M.
- 17.01.13 18:16 firr kenobi
- 17.01.13 22:11 M.M.
- 20.01.13 14:28 firr kenobi
- 20.01.13 14:37 firr kenobi
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-07-11 Tokarze CNC czyli ciężkie życie prototypiarza
- 2024-07-12 Zgody na przetwarzanie danych
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual: Installation Guide
- 2024-07-12 stare graty młode kozy
- 2024-07-11 8080
- 2024-07-13 Przyłącze dolne grzejnika
- 2024-07-13 IObit Uninstaller Pro 13.6.0.5 Multilingual Overview
- 2024-07-12 Czym wykonać otwór fi 100 w betonie komórkowym?
- 2024-07-12 Warszawa => Senior Rust Software Engineer <=
- 2024-07-12 Warszawa => Business Unit Manager (Recruitment Business) <=
- 2024-07-12 Warszawa => Head of WMS Competence Center for IT&D Contract Logistics
- 2024-07-12 Warszawa => Head od WMS Competence Center dla IT&D (Blue Yonder) <=
- 2024-07-12 Kraków => Ruby Backend Developer <=
- 2024-07-12 Warszawa => UX/UI Designer <=
- 2024-07-12 Częstochowa => Specjalista ds. Marketingu (E-Commerce) <=