Cõy cõn bằng nhiều đường B Tree

Một phần của tài liệu Bộ công cụ tìm kiếm thông tin trên mạng (Trang 29)

4. Nội dung luận văn

1.4.2Cõy cõn bằng nhiều đường B Tree

Cõy B- Trees là sự mở rộng của cõy nhị phõn mà mỗi nỳt của nú chứa đựng nhiều khúa. Một cõy B-Trees cấp m thỏa món những tớnh chất sau:

Mọi nỳt cú ớt hơn hoặc bằng m con

Mọi nỳt ngoại trừ gốc và cỏc nỳt lỏ cú nhiều hơn hoặc bằng m/2 con

Gốc cú ớt nhất là 2 con (trừ khi nú là nỳt lỏ)

Tất cả cỏc lỏ cú cựng một cấp

Một nỳt khụng phải lỏ với k con chứa đựng k-1 khúa

23 234

6 12 19 37 102 157 308 322 351 369

31 32 35 99 100 132 141 147 154 170 216 232

Một trang chứa đựng j khúa và j+1 con trỏ cú thể được diễn tả như sau Trong đú K1 < K2 < K3 …..< KjP0 trỏ tới cõy con chứa đựng khúa K <

K1, Pj trỏ tới cõy con chứa đựng khúa K > Kj, và Pi (0 < i < j ) trỏ tới cõy con cú cỏc khúa K sao cho: Ki < K < Ki+1.

*Tỡm kiếm trong cõy B- Trees: Sau khi một trang được tỡm kiếm và nạp

vào trong bộ nhớ trong, ta tiến hành tỡm kiếm giữa cỏc khúa K1, K2,...Kj. nếu khúa tỡm kiếm bằng với Ki thỡ quỏ trỡnh tỡm kiếm hoàn thành. Ngược lại, nếu khúa nằm giữa Ki và Ki+1 thỡ trang trỏ bởi Pi sẽ được tũm và nạp và quỏ trỡnh sử lý được tiếp tục. nếu khúa nhỏ hơn K1 thỡ sử dụng P0 cũn nếu khúa lớn hơn kj thỡ sử dụng pj. Nếu Pilà một con trỏ rỗng, thỡ việc tỡm kiếm khụng thành cụng.

Thuật toỏn chốn cũng rất đơn giản. Trong hầu hết cỏc trường hợp, khúa mới sẽ được chốn vào trong một nỳt lỏ tương ứng, nhưng nếu nỳt lỏ đú đầy thỡ phải tỏch ra làm hai, và khúa ở giữa của nỳt phải được chốn vào trong nỳt cha.

Việc chốn này cú thể gõy cho nỳt cha cú quỏ nhiều khúa và cũng phải tỏch ra làm hai, quỏ trỡnh tỏch này cú thể lan truyền tới gốc. Nếu nỳt gốc phải tỏch ra thỡ phải tạo ra một nỳt gốc mới với chỉ một giỏ trị khúa K[m/2], thuật toỏn chốn vẫn luụn giữ được cỏc thuộc tớnh của cõy B- Tree.

Để đảm bảo được thuộc tớnh của cõy trong thuật toỏn xúa ta phải xử lớ nhiều phộp lan truyền trờn cõy, do khụng cú đủ thời gian, thuật toỏn lại quỏ phức tạp mà hiện nay đó cú thuật toỏn xúa mới trờn cõy B+ -Tree rất đơn giản nhưng vẫn giữ được tớnh chất của cõy B-Tree. Em xin khụng trỡnh bày

P0, K1, P1, K2,………, Pj – 1, Kj, Pj

thuật toỏn xúa ở đõy, mà em trỡnh bày thuật toỏn xúa của cõy B+ - Tree ở phần sau.

1.4.2.2 Cõy B* - Tree

Cõy B* - Tree giống với cõy B-Tree ban đầu, tuy nhiờn mỗi nỳt chứa ớt nhất 2/3 m khúa (m là số lượng khúa lớn nhất mà mỗi nỳt cú thể chứa được). Thuộc tớnh của cõy B*- Tree như sau:

Mọi nỳt cú ớt hơn hoặc bằng m con

Mọi nỳt ngoại trừ gốc và lỏ cú nhiều hơn (2m-1)/3

Gốc cú ớt nhất 2 con và nhiều nhất 2[(2m-2)/3] +1 con

Tất cả lỏ cú cựng cấp bậc

Nỳt khụng phải lỏ với k con chứa đựng k-1 khúa

Tuy cõy B* - Tree cú thể làm cho chiều cao của cõy giảm nhưng thuật

toỏn chốn vào xúa lại rất phức tạp, mỗi lần xử lý ta khụng chỉ chỉnh sửa nỳt cha của nỳt hiện thời mà cũn phải duyệt cả nỳt anh của nú nữa. Cú nghĩa là, nếu nỳt cần chốn đó đầy, ta duyệt nỳt anh của nú, nếu khụng đầy thỡ ta chuyển dữ liệu của nỳt sang nỳt anh, cũn nếu cả hai nỳt cựng đầy thỡ ta phải tỏch cả hai nỳt đú ra. Do tớnh chất phức tạp của thuật toỏn mà ta xin khụng trỡnh bày ở đõy. 1.4.2.3 Cõy B+ - Tree Tree ( m = 4) 29 281 6 12 19 99 132 170 308 322 351 369 31 32 35 99 100 132 141 147 154 170 216 272 Dữ liệu kết hợp

Thụng thường ta phải thờm một số loại dữ liệu đi cựng với khúa trong cõy B-Tree, vớ dụ như địa chỉ của khúa trong dữ liệu, tần xuất của khúa...vv.Cõy B+- Trees là một biến thể của cõy B-Trees, trong đú cỏc khúa tại nỳt lỏ sẽ được kết hợp với dữ liệu của nú,và một vài khúa được sao chộp lờn cấp bậc cao hơn. Một nỳt khụng phải lỏ trong B+- Tree cú dạng

Trong đú K1 là bản sao khúa đầu tiờn của nỳt trỏ bởi P1, K2 là khúa đầu tiờn của nỳt trỏ bởi P2...vv. Cõy con trỏ tới bởi Pi chứa đựng tất cả cỏc khúa K: Ki≤K<Ki+1. cõy con trỏ tới bởi P0 chỉ chứa đựng cỏc khúa K<K1, và cõy con trỏ tới Pj chỉ chứa đựng cỏc khúa K≥Kj.

Nỳt lỏ trong cõy B+ - Tree được diễn tả như sau Trong đú Di là dữ liệu kết hợp với khúa Ki.

Thuật toỏn chốn trong cõy B+- Tree tương tự như thuật toỏn chốn trong cõy B-Tree thụng thường, tuy nhiờn khi một nỳt bị tỏch thành hai thỡ khúa đầu tiờn của nỳt sau sẽ được sao chộp lờn nỳt cha. (adsbygoogle = window.adsbygoogle || []).push({});

Giải thuật chốn trờn cõy B+ - Tree:

Tỡm nỳt lỏ nơi khúa sẽ được chốn

chốn khúa và dữ liệu vào vị trớ tương trong nỳt If (nỳt quỏ đầy) Then Begin

Tỏch nỳt thành hai

Chốn khúa đầu tiờn của nỳt sau lờn cha End

P0, K1, P1, K2,………,Pj – 1, Kj, Pj

Thuật toỏn xúa trong cõy B+-Trees dễ hơn rất nhiều so với thuật toỏn xúa trờn cõy B-Tree. Với những đỏnh giỏ và phõn tớch thỡ thuật toỏn chốn và xúa trờn cõy sẽ làm cho cỏc nỳt trờn cõy luụn luụn chứa khoảng 68% dữ liệu tối đa, và thậm chớ cỏc nỳt chỉ tự do khi chỳng rỗng.

Giải thuật xúa trờn cõy B+- Tree

Tỡm nỳt lỏ chứa khúa bị xúa Xúa khúa và dữ liệu của nú từ nỳt If (Nỳt rỗng sau khi xúa)

Then begin

Giải phúng nỳt

Xúa cặp(Ki, Pi ) cho nỳt này trong nỳt cha End

Với những tớnh chất của mỡnh cõy B+ - trees đó trở thành một cấu trỳc tối ưu trong cỏc ứng dụng cơ sở dữ liệu. Điều khiển cõy B+ -Tree cũng dễ dàng hơn rất nhiều so với cõy B-Tree, và nú cũng rất dễ dàng làm cho cỏc nỳt cú cựng một cấp bậc.

1.4.2.4 Cõy BLink – Trees

Với định nghĩa được nờu ở trờn, ta cú được đầy đủ những tớnh chất tối ưu của cõy B+ - Tree, xong ta nhận thấy rằng cỏc trang lỏ trờn cõy tạo thành một mảng sắp xếp nhưng lại là một mảng rời rạc, vỡ vậy mà nú gõy khú khăn cho quỏ trỡnh tỡm kiếm khi mà phạm vi tỡm kiếm được nằm trờn nhiều hơn hai trang, vớ dụ như ta lấy 4 giỏ trị liền nhau trong một lần truy cập nhưng 4 giỏ trị này được nằm trờn hai lỏ liền nhau của cõy. Để khắc phục vấn đề này em xin đưa ra cấu trỳc cõy BLink – Tree, trong đú mỗi trang cú thờm một con trỏ trỏ tới ngay trang liền kề với nú.

1.4.2.5 Lựa chọn phương phỏp lưu trữ dữ liệu tần số

Trong tài liệu cỏc từ thường xuất hiện rất nhiều lần, vỡ vậy mà hệ thống lập chỉ mục phải cú khả năng lưu trữ dữ liệu tần xuất một cỏch hiệu quả. Dưới đõy em đưa ra một số phương phỏp duy trỡ dữ liệu này cho cỏc khúa: * Mỗi tần xuất cú thể được lưu trữ như một khúa trong bảng chỉ mục. Phương phỏp này gõy lóng phớ khụng gian bộ nhớ và gõy phức tạp cho thuật toỏn B-Tree

* Dữ liệu tần suất cú thể được lưu trữ trong nỳt cựng với khúa. Nhưng do sự giới hạn về kớch thước của nỳt nờn chỉ cú một số hữu hạn tần xuất được lưu trong nỳt.

* Mỗi khúa trong bảng chỉ mục cú thể chứa đựng một con trỏ tới một khối lưu trữ dữ liệu tần xuất ở bờn ngoài. Nú đũi hỏi thời gian truy cập đĩa khi một khúa được thờm vào hay được truy cập đến. Kớch thước của khối ngoại vi cú thể được nhõn đụi khi nú trở nờn đầy, ớt nhất một nửa khụng gian trong khối luụn được sử dụng.

* Một vài dữ liệu tần số được lưu cựng với khúa,và khi dữ liệu đẫ được tập hợp đủ, một số trong chỳng được gửi ra khối bờn ngoài. Kỹ thuật này được gọi là Pulsing.

Hỡnh 9: Cấu trỳc cõy B+ – Tree ( m = 4)

29 281

6 12 19 99 132 170 308 322 351 369

31 32 35 99 100 132 141 147 154 170 216 272

Dữ liệu kết hợp với khoá

CHƯƠNG II

CÁC CễNG CỤ TèM KIẾM CƠ BẢN 2.1 Thu hồi trang Web

2.1.1 Bộ thu hồi Web

Cỏc Web Crawler cú nhiệm vụ thu hồi cỏc trang Web site khỏc nhau trờn Internet về cho bộ Indexer. Web Crawler đầu tiờn được thiết kế bởi Matthew Gray năm 1993 và được đặt tờn là Wanderer. Web Crawler cú đầu vào là một tập cỏc giỏ trị khởi tạo URL – S0. Đầu tiờn nú đặt S0 trong một hàng, nơi lưu trữ tất cả cỏc giỏ trị URL thu được và sắp xếp chỳng theo một thứ tự ưu tiờn nào đú. Từ hàng lưu trữ này, Crawler lấy một giỏ trị URL, tải trang tương ứng xuống rồi trớch tất cả giỏ trị URL nằm trong trang và đặt chỳng vào hàng. Quỏ trỡnh xử lý này được lặp đi lặp lại cho tới khi Web Crawler quyết định dừng. Cỏc địa chỉ mới tỡm thấy cú thể được sử dụng ngay để bộ thu hồi Web tỡm ra trang Web mới hoặc chỳng cú thể được lưu trữ vào cơ sở dữ liệu của bộ thu hồi Web để nú lập lịch tỡm kiếm sau này. Cỏc Web Crawler xem Internet như một đồ thị với cỏc Site là cỏc đỉnh của đồ thị và duyệt đồ thị theo chiều rộng hoặc chiều sõu để thu thập thụng tin cần thiết. Nú cũng cho phộp người sử dụng đăng ký cỏc trang Web của mỡnh bằng cỏch thờm địa chỉ URL của họ vào tập S0 cỏc URL ban đầu. Nhờ vậy mà cỏc thụng tin về trang Web của họ được cập nhật sớm hơn, trước khi Web Crawler được tỡm thấy, Cú hai vấn đề mà Web Crawler cần phải đối phú: Thứ nhất là cỏc trang Web luụn thay đổi, vỡ thế cỏc trang mà chỉ mục trỏ đến cú thể khụng cũn tồn tại nữa. Thứ hai là vấn đề cập nhật lại cỏc trang

Web khi chỳng đó lỗi thời. Web Crawler cú thể tỡm kiếm hàng triệu trang Web mỗi ngày. Để nghiờn cứu một Web Crawler người ta thường tỡm hiểu cỏc vấn đề sau: (adsbygoogle = window.adsbygoogle || []).push({});

2.1.2 Chọn lựa cỏc trang

Ở đõy, Crawler luụn muốn chọn lọc cỏc trang quan trọng, để thu thập được một tập dữ liệu cú chất lượng cao, để xem Crawler hoạt động và gợi ý như thế nào để thăm cỏc trang tốt , chỳng ta đi tỡm hiểu vấn đề này.

* Ma trận độ quan trọng

Cho một trang Web P, chỳng ta cú thể định nghĩa độ quan trọng của trang theo một trong cỏc cỏch sau.

1.Mức độ quan tõm: Mục đớch đặt ra là thu được cỏc trang liờn quan tới nội

dung tỡm kiếm của một hoặc là một nhúm người sử dụng. Để định nghĩa được khỏi niệm này là thụng qua mức độ quan tõm. Cho một truy vấn Q, mức độ quan trọng của P được định nghĩa là “độ tương quan văn bản ” giữa P và Q. Một cỏch hỡnh thức hơn, để tớnh toỏn độ tương quan giữa cỏc văn bản, đầu tiờn chỳng ta mụ tả mỗi tài liệu (P hoặc Q) như là một vộc tơ m chiều w1, w2..., wm, wi trong vộc tơ này diễn tả từ thứ i trong bộ từ vựng. nếu wi khụng xuất hiện trong tài liệu thỡ wi bằng 0, cũn nếu xuất hiện wi được thiết lập để diễn tả ý nghĩa của từ. Một cỏch phổ biến để tớnh mức độ quan trọng wi đú là nhõn số lần của từ thứ i xuất hiện trong văn bản với nghịch đảo của lần suất tài liệu (inverse document frequence - IDF) của từ thứ i. IDF bằng 1 chia cho số lần từ đú xuất hiện trong toàn bộ Web. Sau đú chỳng

ta định nghĩa độ tương quan giữa P và Q là tớch cosine giữa cỏc vộc tơ P và Q. Giả sử truy vấn Q diễn tả sự quan tõm của người sử dụng, thỡ ma trận này chỉ ra trang P liờn quan tới nú như thế nào.Chỳng ta sử dụng kớ hiệu IS(P) để chỉ độ quan trọng ma trận này.

Lưu ý rằng nếu chỳng ta khụng sử dụng toỏn hạng IDF trong việc

túnh độ tương quan thỡ độ quan trọng của một trang cú thể được tớnh toỏn với thụng tin cục bộ, vớ dụ như là P và Q. Cũn nếu sử dụng số hạng IDF thỡ chỳng ta cần thụng tin toàn cục. Trong suốt quỏ trỡnh xử lý Crawling chỳng ta khụng cú toàn bộ tập tài liệu vỡ thế chỳng ta phải ước lượng thừa số IDF từ cỏc trang đó được Crawling, hoặc từ vài số hạng được tớnh toỏn từ trước. Chỳng ta sử dụng IS (P) chỉ độ quan trọng của trang P được tớnh theo cỏch trờn để phõn biệt với độ quan trọng thụng thường IS(P) (được tớnh toỏn sau khi toàn bộ trang Web đó được tải).

2. Mức độ phổ biến: Một cỏch để định nghĩa mức độ phổ biến là sử dụng

tổng số Backlink của một trang ( thuật ngữ backlink ở đõy được định nghĩa số cỏc liờn kết trỏ tới trang đó cho). Vỡ thế cỏc Backlink của trang P là tập hợp tất cả cỏc liờn kết trờn cỏc trang trỏ tới P. Khi sử dụng cỏc giỏ trị

backlink như một ma trận đỏnh giỏ mức độ phổ biến thỡ giỏ trị đỏnh giỏ mức độ quan trọng của trang P là số cỏc liờn kết tới P xuất hiện trờn toàn bộ Web. Chỳng ta sử dụng ký hiệu IB(P) để phõn biệt cỏch tớnh này với cỏch tớnh độ quan trọng khỏc. Bằng trực giỏc ta thấy rằng một trang Web P được nhiều trang Web khỏc liờn kết tới thỡ sẽ quan trọng hơn cỏc trang Web khỏc liờn kết tới thỡ sẽ quan trọng hơn cỏc trang Web ớt được cỏc trang Web khỏc đề cập tới. Trờn Web IB(P) thường được sử dụng để sắp xếp kết quả tỡm kiếm

tới người sử dụng cuối sao cho cỏc trang đầu tiờn giống với nội dung đang được quan tõm nhất. Lưu ý rằng đỏnh giỏ IB(P) đũi hỏi phải tớnh tổng của cỏc backlink trờn toàn bộ Web. Một Crawler cú thể ước lượng giỏ trị này với IB’(P) - số lượng cỏc liờn kết đó được xem xột đến trang P.

3. Theo vị trớ của trang : Cỏch xỏc định vị trớ quan trọng của trang P là

một hàm tớnh theo vị trớ của nú IL(P), chứ khụng phải là nội dung của nú. Nếu URL u dẫn tới trang P, thỡ IL (P) là một hàm của u. Cho vớ dụ URL kết thỳc với “.com” cú thể được cho rằng phổ biến hơn cỏc URL kết thỳc ở dạng khỏc, hoặc URL chứa đựng xõu “home” cú thể được quan tõm URL khỏc. Ma trận vị trớ thỉnh thoảng cũng cho rằng cỏc URL với ớt đường gạch chộo sẽ thường dựng hơn cỏc URL cú nhiều đường gạch chộo. Cỏc ma trận vị trớ cú thể được xem xột như là một trường hợp đặc biệt của ma trận độ quan tõm, xong chỳng ta cú thể liệt kờ ra đõy một cỏch riờng biệt bởi chỳng rất dễ dàng để đỏnh giỏ. Cụ thể là tất cả cỏc ma trận vị trớ đề xuất ở đõy mang tớnh cục bộ, bởi ta cú thể ước lượng một cỏch đơn giản trờn giỏ trị URL u. Ma trận đỏnh giỏ mức độ của chỳng ta cú thể được kết hợp trong nhiều cỏch khỏc nhau. Dựa vào vị trớ độ quan trọng của trang Web khụng chỉ phụ thuộc vào nội dung trang Web mà cũn thể hiện ở địa chỉ URL của chỳng.

Vớ dụ chỳng ta cú thể định nghĩa ma trận:

IC(P) =k1 . IS (P) + k2 .IB(P) + k3 .IP (P) với k1,k2,k3 là cỏc hằng số.

* Cỏc mụ hỡnh thu hồi

Vấn đề đặt ra ở đõy là thiết kế một Crawler để cú thể thăm cỏc trang quan trọng dựa trờn một ma trận đỏnh giỏ mức độ quan trọng nào đú. Dựa trờn

Một phần của tài liệu Bộ công cụ tìm kiếm thông tin trên mạng (Trang 29)