Tải bản đầy đủ (.doc) (23 trang)

Kỹ thuật cá nhân hóa web ngữ nghĩa trường hợp bùng nổ lượng truy cập web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (428.55 KB, 23 trang )

LỜI MỞ ĐẦU
Môn học Cấu trúc dữ liệu nâng cao là một môn cơ bản, nền tảng cho mỗi người học
và làm về công nghệ thông tin. Trong môn học này, chúng ta được tìm hiểu, nghiên cứu
rất nhiều cấu trúc dữ liệu cùng với những ứng dụng của chúng trong thực tế. Tài liệu này
nhằm giới thiệu về cấu trúc splay tree – cây splay và ứng dụng splay tree trong “Kỹ
thuật cá nhân hóa web ngữ nghĩa trong trường hợp bùng nổ lượng truy cập web”
Chúng tôi xin trân trọng tỏ lòng biết ơn tới Tiến sĩ Nguyễn Mạnh Hùng - người đã
trực tiếp giảng dạy môn học Cấu trúc dữ liệu nâng cao. Chúng tôi cũng xin chân thành
cảm ơn các bạn bè và đồng nghiệp đã nhiệt tình giúp đỡ để tôi hoàn thành bài tập này.
Mặc dù đã cố gắng nhưng chắc hẳn tài liệu khơng tránh khỏi những thiếu sót. Vì vậy
chúng tơi rất mong được Thầy cùng các bạn nhận xét và góp ý để tôi được để tài liệu này
được hoàn thiện hơn.
Chúng tôi xin trân thành cảm ơn!

Hà Nội, tháng 1 năm 2012
Nhóm học viên thực hiện:
Đỡ Quang Hịa - Lê Thanh Mai

1


Phần 1: Splay tree
1.1 Giới thiệu về Splay tree
Splay tree được các tác giả D.D.Sleator và R.E.Tarjan đưa ra năm 1983. Cây
Splay là cây tìm kiếm nhị phân, song mỗi phép toán trên cây đi kèm theo thao tác cấu
trúc lại cây, như các cây tự điều chỉnh khác là cây AVL hay cây đỏ đen, được gọi là
splaying cây. Với cây AVL hoặc cây đỏ - đen, chúng ta không quan tâm tới tần suất truy
cập của các phần tử dữ liệu, mà thay cho điều đó chúng ta luôn luôn đảm bảo cây không
bao giờ mất cân bằng tại mọi đỉnh, và do đó thời gian thực hiện các phép toán trên cây là
O(logn). Để cài đặt cây AVL hoặc cây đỏ - đen, ta cần phải đưa vào mỗi đỉnh thông tin
về sự cân bằng hoặc về màu của đỉnh đó.


Trong khi đó, Splaying cây nhằm mục đích giảm bớt tổng thời gian truy cập dữ
liệu bằng cách dịch chuyển các dữ liệu được thường xuyên truy cập lên gần gốc cây, và
vì vậy sự truy cập tới các dữ liệu đó sẽ nhanh hơn. Ưu điểm của Splay cây là chúng ta
không cần lưu thông tin về sự cân bằng của các đỉnh, và do đó, tiết kiệm được bộ nhớ và
sự cài đặt cũng đơn giản hơn.
Bên cạnh đó, Splay tree là cây nhị phân tìm kiếm nên cũng khá rõ ràng, dễ hiểu và
dễ dàng thực hiện các thao tác cơ bản như: tìm kiếm, xoá, chèn,…
Ý tưởng của Splay tree là sắp xếp các nút vừa được xét, có tần suất sử dụng cao về
gốc và xem xét với các nút trong có nhiều con cháu hay các nút lá.
Việc chuyển một đỉnh v bất kỳ lên gốc cây là rất đơn giản bằng cách sử dụng các
phép quay cây (trái hoặc phải), mỗi lần quay đỉnh v được chuyển lên 1 mức. Chẳng hạn,
di chuyển nút được truy nhập x về gốc bởi phép quay:

2


1.2 Nguyên tắc hoạt động của splay tree
Trên cây splay, các phép quay được định nghĩa bằng các quy tắc quay để quay dần
nút được xét về gốc
Có 2 phương pháp để quay:
- Bottom Up: Xuất phát từ nút được truy cập, ta quay nút này từ dưới lên trên cho
đến khi nó trở thành nút gốc.
- Top Down: Xuất phát từ gốc của cây, ta quay nút này từ trên xuống dưới đến khi
đến nút đang được truy cập.
- Trên cây splay, các phép quay được định nghĩa bằng các quy tắc quay để quay
dần nút được xét về gốc. Nếu x là gốc của cây thì không phải thực hiện gì.
1.2.1 Phương pháp Bottom Up
Phụ thuộc vào cấu trúc của đường dẫn truy cập và luôn đảm bảo cây Splay vẫn là
cây tìm kiếm nhị phân, phương pháp Bottom Up sử dụng 3 quy tắc quay cơ bản sau:
 Dạng 1: Zig

Giả sử cha của nút x là gốc của cây, ta thực hiện quay x quanh nút cha của x.

Dạng 2:
Zig-Zig
Cha của
nút x

không

phải là gốc của cây, nút x là con trái ( hoặc con phải) của nút gốc, cha của nút x là con

Quay y quanh z

Quay x quanh y

phải (hoặc con trái) của nút gốc. Ta thực hiện phép quay cha của x quanh ông của x và
quay x quanh cha của x.

3


 Dạng 3: Zig-Zag
Cha của nút x không là gốc của cây, nút x là con trái (hoặc con phải) của nút gốc,
cha của nút x là con phải (hoặc con trái) của nút gốc. Ta thực hiện quay x quanh cha của
x và quay x quanh ông của x.
Quay x quanh z

Quay x quanh y

Ví dụ: Áp dụng quy tắc quay để quay nút a thành nút gốc.


i
i
h
g
f

J

Cha cña a là nút b,
không phải là nút gốc,
b và a đều là con phải,
áp dụng quy tắc zig-zig

I
H

e

A

h
g

I
i

f

H


G

g

d

C

a

B

b

b
D

c
E

E

H
a

A
d

F


a

e
b

B

F

c
C

4

F
E

D
C

J
I

f

G

c


B

h

e

A

d

J

Cha cua a là nút d, không
phải là nút gốc,
d là con trái, còn a là con
phải,Áp dụng quy tắc
zig-zag

D

G


i
a

h

J
h


g

I

f

Cha của a là nút f, không
phải là nút gốc, f là con
trái, còn a là con phải.
Áp dụng quy tắc zig-zag

H
a

A

f

g
d

A

b

B
d

e

b

B
c

C

F

e

c
G

i

C

h

E

g
e

d

c

C


F

b

B

I

G

E
D

H

Cha của a là nút h,
không phải là nút gốc, a
và h đều là con trái
Áp dụng quy tắc zig-zig

G

E
D

1.2.2 Phương pháp phân tích Top – Down
Phụ thuộc vào cấu trúc của đường dẫn truy cập và luôn đảm bảo cây Splay vẫn là
cây tìm kiếm nhị phân, phương pháp Bottom Up sử dụng 4 quy tắc quay cơ bản sau:
 Dạng 1: Zig

Cha của nút Y là gốc của cây, ta thực hiện: Quay nút Y quanh nút cha của Y. Nút Y
trở thành nút chú của X.

5

J

I

f

A

H

J

a

D

F

i


 Dạng 2: Zig - Zig
Cha của nút Z không phải là gốc, nút Z và cha của nút Z cùng là con trái (hoặc con
phải) của nút gốc. Ta thực hiện: Quay cha của Z quanh ông của Z và quay Z quanh cha
của Z


 Dạng 3: Zig – Zag
Cha của nút Z không là gốc của cây, nút Z là con trái (hoặc con phải), cha của nút Z
là con phải (trái) của nút gốc. Ta thực hiện quay cha của Z quanh ông của Z.

 Dạng 4: Reasembling
Thực hiện: sắp xếp lại cây

6


VÍ DỤ:
Áp dụng các quy tắc để quay nút 18 trở thành nút gốc

Zi
g-Z
ig

g
-Za
g
i
Z

-6-

Zig

Re
as

em
ble

7


1.3 Các phép cập nhật trên Splay Tree
1.3.1 Find (i, T) - Tìm kiếm nút i trên cây T
- Tìm kiếm nút i trên T, như BST
- Nếu tìm thấy, quay nút i về gốc
- Nếu khơng có i, quay nút cuối cùng được thăm trên đường dẫn tìm
kiếm về gốc.
Dạng zig-zag

Ví dụ tìm nút 65 trên cây T

50

=>quay nút 65 quanh nút

50

70, quay nút 65 quanh 60

40

40

20
20

16

65

60
43

43

16

65
65

25

70

63

70

66

60
66

63

6

5
5
0

Dạng zig
=> quanh 65 quanh 50

4
0

6
3

2
0

4
3

Ví dụ tìm nút 42 trên cây T

Nút 42 không tìm thấy trên cây,
nút 43 được thăm lần cuối cùng
trên đường dẫn tìm kiếm
=> quay nút 43

5
0
4
0


1
6

6
6

6
0

1
6

2
0

7
0

6
0
4
3

7
0
6
5

2

5
6
3

4
3

6
6

4
0

5
0
6
0

2
0

Dạng zig-zag =>quay nút
43 quanh nút 40, quay
nút 43 quanh 50

7
0

1
6

6
5
6
3

8

6
6


1.3.2 Catenate (T1,T2)

- Nối 2 cây T1 và T2 được 1 cây BST
- Tìm nút i lớn nhất trong cây T1
- Quay i về làm gốc T1
- Nối T2 làm con phải của nút gốc i

i
T1

i

T2

T2
T1

T1


T2

Ví dụ nối 2 cây
sau
6
0

10
2
5

8

5

6
5

2
9

23

7
5

5
5

9

0

Cây T2

Cây T1
29
25
10
8
5

1.3.3 Split (i,T) – Tách cây T tại node i
Trường hợp 1: i∈ T


Quay nút i về làm gốc của T



Cắt liên kết trái hoặc liên kết phải của nút i

9

75

55
23

=> cây T được tách tại nút i thành 2 cây : T1, T2


60

65

90


i

Cắt liên kết phải của i

i

T1

Quay i về gốc
T1

T

T2
i

T2

Cắt liên kết trái của i
T1

T2


Trường hợp 2: i∉T


Quay nút i- (nút có giá trị liền trước i) hoặc i+ ( nút có giá trị liền sau i) về
gốc của T



Cắt liên kết phải của nút i- hoặc liên kết trái của i+



=> cây T được tách tại nút i- hoặc i+ thành 2 cây: T1, T2
Quay i- về
gốc

Cắt liên kết phải của iT
2

T
1
i
+

Quay i + về
gốc

T

i

-

i
-

T1

T
i 2
+

T
1

T
2

Cắt liên kết trái của i +

Ví dụ tách cây T tại nút 60

T
2

T
1

Quay nút 60 (dạng zig)

5

0
4
0
2
0

T
1

60
50

6
0
4
3

40

7
0

65

20

6
5

1

6

6
6

6
3

70

43

63

16
50

Cắt liên kết trái của nút 60

60

40
20
16

66

70
43


Cây T1

10

65
63

66

Cây T2
-9-


1.3.4 Insert (i,T)
Insert (i,T) - Phép chèn 1
- Chèn nút vào như trong BST
- Quay nút vừa được chèn về gốc
- Nếu đã có i trong T thì quay nút đó về gốc
Insert (i,T) – Phép chèn 2:
- Thực hiện Split(i,T) ta được 2 cây con T1, T2
- Nối cây T1 thành con bên trái của nút i, T2 thành con bên phải của nút i
Nối T1 thành con
trái của i

i

Split(i,T)
T
1


T

Nối T2 thành con
phải của i

T
2

T
1

T
2

Ví dụ chèn nút 42 vào cây T
4
3

4
0

5
0
4
0
2
0

5
0


Split(42,T)

2
0

6
0

Cây T1

1
6

4
3

6
0
7
0

7
0

1
6
6
3


4
0

6
6

4
3

6
3
5
0

2
0

Nối T1 thành con trái của 42
Nối T2 thành con phải của 42

6
5

4
2

6
5

6

0

1
6

7
0
6
5

6
3

11

6
6

6
6

Cây T2


1.3.5 Delete (i,T) – Xoá nút i khỏi cây T
• Quay nút i về nút gốc của cây T (nếu nút i khơng có trên cây T thi quay nút
được thăm lần cuối cùng trên đường dẫn tim kiếm)


Cắt bỏ liên kết trái và liên kết phải của nút i, ta được hai cây T1 và T2




Xóa nút i



Catenate(T1, T2)
i

i

Cắt liên kết trái và
liên kết phải của nút i,
xóa nút i

Quay nút i
T1

T

Catenate(T1, T2)
T1

T2

T2

T’


Ví dụ xóa nút 40 khỏi cây T

4
40
0
2
0
1
6

40

Quay nút 40 về gốc

5
0

2
0

6
0
4
3

50

1
6


7
0

60

4
3

2
5

70

6
5

2
5

2
5

6
6

6
3

65


5
0

2
0
1
6

66

63
6
0

4
3

7
0
6
5
6
6

6
3

Ví dụ xóa nút 80 khỏi cây T

70


60

50
40
20
16

60

50
70

43

40

65

25
63

20

12

16

63
43


66
25

65
66


Phần 2 : Bài báo khoa học
KỸ THUẬT CÁ NHÂN HểA WEB NGỮ NGHĨA
Trong trường hợp bùng nổ lượng truy cập web
Khái lược
Sự phỏt triển vũ bóo về kớch thước cũng như lượng sử dụng của World Wide Web vẫn đang tiếp
tục tạo ra những thách thức và nhu cầu to lớn mới. Nhu cầu mong muốn dự đoán được những sở
thích của người dùng nhằm giải quyết và cải thiện việc dụt mợt trang web có thể đạt được
thơng qua việc cá nhân hóa các trang web. Kỹ thuật cá nhân hóa được thực hiện dựa trên những
khai báo về sở thích cụ thể của người dùng và mợt quá trỡnh lặp đi lặp lại của việc kiểm định
hoạt động duyệt web của người dùng, thu thập những yêu cầu của quá trỡnh này về cỏc đối
tượng bản thể học (ontological objects) và lưu giữ chúng trong các hồ sơ (profile) nhằm mục
đích cung cấp các nợi dung mang tính cá nhân. Vấn đề mà chúng ta sẽ đề cập là trường hợp khi
một số trang web trở nên phor biến trong một giai đoạn ngắn và được truy cập thường xuyên liên
tục trong một không gian và thời gian giới hạn. Mục tiêu của chúng ta là đối phó được với sự
bùng nổ về lượng truy cập này và có thể tiếp tục thu hút được những người dùng tiềm năng trong
tương lai có cùng những mối quan tâm chung đến với những trang web có lượng truy cập cao
này. Do đó, trong bài báo này, chúng tơi sẽ đề x́t mợt kỹ thuật cá nhân hóa web mới, dựa trên
các cấu trúc dữ liệu tiên tiến.
Các cấu trúc dữ liệu được sử dụng bao gồm Cây Splay (1) và các đống Nhị phân (Binary Heaps)
(2). Chúng tôi sẽ miêu tả kiến trúc của kỹ thuật, phân tích mức độ phức tạp về không gian và thời
gian và chứng mỡnh về mặt hiệu năng của đề xuất đưa ra. Thêm nữa, chúng tôi sẽ so sánh về cả
hai mặt lý thuyết và thử nghiệm kỹ thuật đề xuất đó với các cách tiếp cận khác nhằm chứng

mỡnh cho tính hiệu quả của nó. Giải pháp của chúng tơi đạt được độ phức tạp về không gian
O(P2) và chạy trong thời gian là k.logP, tại đó k là số lượng các trang và P là số lượng các đối
tượng bản thể (ontonology) của các trang Web.
Cỏc từ khúa-thành phần: personalization (cá nhân hóa), ontologies (các đối tượng bản thể học),
cấu trúc dữ liệu thích nghi (adaptive data structure).
I. Giới thiệu
Web ngữ nghĩa (The Semantic Web) đó trở thành mợt đũn bẩy đưa việc tích hợp các tri thức
trên Web lên các cấp độ mới. Bất chấp những nỗ lực dành cho các vấn đề về nghiên cứu và kỹ
thuật, có rất ít các ứng dụng thực tế triển khai và đánh giá về web ngữ nghĩa đối với những người
dùng thực. Web ngữ nghĩa chỉ có thể được cung cấp nếu nó được vận hành bởi nhu cầu, ngữ
cảnh, các hồ sơ của người dùng để có thể tích hợp một cách liên tục các tri thức lên web nhằm
cung cấp các nội dung thực sự được mong đợi.
Ngữ cảnh và sự tùy biến (customization) là một trong những yếu tố chủ yếu quyết định tính
chính xác, hiệu quả, phù hợp của các thông tin truy cập trên các thư viện số của Internet mà nói
chung lại đó là Web ngữ nghĩa. Trong các ứng dụng Web truyền thống, người dùng duyệt Web
theo các cấu trúc siêu văn bản đó được định nghĩa trước. Vỡ vậy, việc tỡm kiếm nội dung yờu
cầu người dùng phải hiểu được bố cục của trang Web, mà bố cục này thỡ khụng phải lỳc nào
cũng rừ ràng. Việc bổ sung và cỏc ứng dụng Web cỏc kiến nghị đó được cá nhân hóa sẽ cung
cấp các hướng đi thay thế cho việc xuất bản dữ liệu, và tăng cường khả năng cho người dùng
trong việc tỡm kiếm cỏc dữ liệu mà họ quan tõm. Tuy nhiờn, tớnh hiệu quả của việc cỏ nhõn húa
được dựa trên chất lượng của hồ sơ người dùng và mối quan hệ giữa các đối tượng nội dung.
Việc mô hỡnh húa cỏc dữ liệu sẽ được xuất bản và hồ sơ người dùng bằng các đối tượng bản thể
học (ontologies) sẽ cho phép thể hiện được hiệu quả hơn các mối quan tâm của người dùng và

13


các mối quan hệ giữa các bộ phận thông tin, thơng qua việc thúc đẩy các tính năng tiên tiến của
cơng nghệ Web ngữ nghĩa. Chính các mối quan hệ về ngữ nghĩa này có thể được khai thác để thu
được các kết quả về cá nhân hóa được chính xác hơn.

Kỹ thuật cá nhân hóa được thực hiện dựa trên những khai báo về sở thích cụ thể của người
dùng và một quá trỡnh lặp đi lặp lại của việc kiểm định hoạt động duyệt web của người dùng,
thu thập những yêu cầu của quá trỡnh này về cỏc đối tượng bản thể học (ontological objects) và
lưu giữ chúng trong các hồ sơ (profile) nhằm mục đích cung cấp các nợi dung mang tính cá
nhân.
Chúng tơi hướng tới việc lưu giữ các dữ liệu quan hệ giữa các đối tượng bản thể học liên
quan đến tính phổ biến của chúng và các yêu cầu của người dùng về các đối tượng bản thể liên
quan đến việc duyệt các nội dung đó. Các thuật tốn về cá nhân hóa và tiến cử nhằm đưa ra các
kiến nghị các trang web đến người dùng thông qua việc truy cập hiện tại của họ và dựa vào các
mẫu duyệt web của người dùng trong quá khứ. Vấn đề chúng ta quan tâm là trường hợp khi một
số trang web trở nên phổ biến trong một thời gian ngắn và được truy cập thường xuyên trong
không gian và thời gian giới hạn. Mục tiêu của chúng ta là giải quyết vấn đề bùng nổ về truy cập
này và giới thiệu được các trang web có lượng truy cập cao này đến người dùng tiềm năng tương
lai có cùng mối quan tâm chung. Vỡ thế, trong bài bỏo này, chỳng tụi đề xuất một kỹ thuật cỏ
nhõn húa web mới, dựa trờn cỏc cấu trỳc dữ liệu tiờn tiến.
Các cấu trúc dữ liệu được sử dụng bao gồm Cây Splay (1) và các đống Nhị phân (Binary Heaps)
(2). Chúng tôi sẽ miêu tả kiến trúc của kỹ thuật, phân tích mức đợ phức tạp về không gian và thời
gian và chứng mỡnh về mặt hiệu năng của đề xuất đưa ra. Thêm nữa, chúng tôi sẽ so sánh về cả
hai mặt lý thuyết và thử nghiệm kỹ thuật đề xuất đó với các cách tiếp cận khác nhằm chứng minh
cho tính hiệu quả của nó. Giải pháp của chúng tơi đạt được đợ phức tạp về không gian O(P 2) và
chạy trong thời gian là k.logP, tại đó k là số lượng các trang và P là số lượng các đối tượng bản
thể (ontonology) của các trang Web.
II. Các nghiên cứu trước đây
Việc cá nhân hóa Web đó trở thành mợt vấn đề quan trọng do sự phổ biến của các ứng dụng
về thương mại điện tử [1,7,9]. Một số phương pháp cho việc cá nhân hóa website đó được đề
xuất [1,3,4,6]. Mục tiêu của mợt trang web đó được cá nhân hóa là thu được những ích lợi từ các
tri thức đạt được từ việc phân tích về hành vi duyệt web của người dùng kết hợp với các thông
tin được thu thập khác, ví dụ như về vị trí truy cập của người dùng, các mẫu về duyệt web của
người dùng trong quá khứ, hay các đồ mà họ đó mua trờn mạng [16,5,6,7,9]. Một vấn đề rất
quan trọng khác nữa là cấu trúc của một trang web và các nghiên cứu mang tính thống kê về các

liên kết và trang web nằm trong cấu trúc đó. UPR là mợt thuật tốn về Đánh giá bậc của trang
web (Page Rank) tại đó kết hợp các dự liệu sử dụng và các kỹ thuật phân tích về các liên kết
nhằm đánh giá về khả năng truy cập của các trang Web dựa trên sự quan trọng của chúng trong
một sơ đồ tổng thể về việc duyệt cả trang Web [15].
Một kỹ thuật cá nhân hóa được sử dụng rất rợng rói khỏc là kỹ thuật cỏ nhõn húa việc khai
phỏ dữ liệu sử dụng web (Web usage data mining personalization) [1]. Vi dụ, mợt thuật tốn
phân lớp cho việc các nhân hóa Web dựa trên kỹ thuật khai thác các dữ liệu sử dụng web đó
được đề x́t. Thuật tốn này gắn cho tài khoản người dùng cả các thơng tin mang tính chất tĩnh,
thơng qua các kỹ thuật xếp nhóm cổ điển, và các hành vi đợng của người dùng, từ đó đề x́t mợt
thuật tốn phân lớp lại mới và hiệu quả hơn [17].
Việc kết hợp Điện tốn Thơng minh (Computational Intelligent) cũng đó được ứng dụng
trong ngữ cảnh của quá trỡnh cỏ nhõn húa Web, thụng qua việc cung cấp cỏc vớ dụ khỏc nhau
về cỏc hệ thống thụng minh, được thiết kế để cung cấp cho người sử dụng Web các thông tin mà
họ tỡm kiếm, mà khụng cần phải đũi hỏi họ phải hỏi một cỏch rừ ràng [19].

14


Mặt khỏc, một hệ thống cung cấp đọc tiểu thuyết online xây dựng các mô hỡnh hồ sơ và đưa
ra các khuyến nghị mà không cần người dùng phải tự dẫn dắt [18] . Nói chung, việc cá nhân hóa
trong thời gian gần đây cũng đó được sử dụng vào một số các lĩnh vực khác. Trong quảng cáo,
một kỹ thuật xây dựng mục tiêu cho các quảng cáo trực tuyến mới cũng đó được đề xuất [28],
với việc sử dụng và thay đổi cho phù hợp một số các kỹ thuật về từ vựng và thu thập thông tin
khá mạnh đó được kiểm thử đầy đủ, để xây dựng mợt ước lượng về sự ham thích của mợt người
dùng đối với các sản phẩm và dịch vụ cụ thể dựa trên việc phân tích hành vi duyệt web của
người dùng đó. Hơn nữa, các kỹ thuật theo hướng tiếp cận nghiên cứu thiết kế kết hợp các hành
vi và công nghệ được đề xuất nhằm hỗ trợ cho việc mơ hỡnh hóa người dùng tơt hơn trong các
ứng dụng quảng cáo trên mobile đó được cá nhân hóa [29]. Thậm chí trong quá trỡnh download
cỏc trũ chơi trên điện thoại bằng các thiết bị điện thoại, một hệ thống giới thiệu các trũ chơi trên
điện thoại đó được cá nhân hóa sẽ được đưa ra, hoạt đợng dựa trên việc phân tích những thời

gian trong ngày, và thời gian trong tuần được sử dụng để cung cấp các kinh nghiệm đó được cá
nhân hóa nhiều hơn [31].
Ngay khi việc bùng nổ về lượng truy cập được coi như là mợt vấn đề về thuật tốn, mợt số
bài báo cũng đó được trỡnh bày. Mợt bợ khung (framework) về thuật toỏn mới cho phộp phỏt
hiện cỏc dấu hiệu của sự bựng nổ đó được giới thiêu: mợt bợ cấu trúc dữ liệu tổng quát hóa cây
nhị phân dịch chuyển (Shifted Binary Tree), và mợt thuật toỏn tỡm kiếm phỏng đốn nhằm tỡm
ra một cấu trỳc dữ liệu hiệu quả làm đầu vào cho thuật tốn.
Ngoài ra, việc cá nhân hóa ngữ nghĩa đó được cải thiện trong các thư viện số cũng như các
cổng thông tin Web. Việc duyệt web theo ngữ nghĩa (Semantic Browsing) cung cấp các nội dung
Web được tạo ra một cách linh động theo ngữ cảnh, từ đó cải tiến lại tri thức cho phù hợp hơn
với mong muốn của người dùng. Ví dụ, với mợt thư viện số về y học đang tồn tại trong thực tế,
Thư viện điện tử quốc gia về truyền nhiễm (The National electronic Library of Infection – NeLI,
www.neli.org.uk) [32], được bổ sung mới bằng một ontology về lĩnh vực truyền nhiễm, từ đó
cho phép các dịch vụ về ngữ nghĩa mới có thể được phát triển mợt cách định tính. Trong quỏ
trỡnh này, việc hồ sơ hóa các nhóm được sử dụng để cải tiến quá trỡnh duyệt ngữ nghĩa, thụng
qua việc tớch hợp cỏc nguồn tri thức phõn tỏn. Dịch vụ được đánh giá thơng qua việc phân tích
log của máy chủ web, việc cải tiến một cách linh hoạt các hồ sơ và thông qua việc phản hồi định
tính từ chính những người dùng thực tế của cổng thông tin NeLI.
Mạng Internet bao gồm các Websites sử dụng những loại cấu trúc khác nhau được coi như là
xương sống của quá trỡnh xõy dựng chỳng. Tuy nhiờn, người dùng thỡ lại duyệt web dựa trờn
nội dung của chỳng, khụng quan tõm đến cấu trúc. Tại mục [33], chúng ta sẽ thảo luận về khả
năng sử dụng các ontologies trong việc khám phá các cấu trúc của các websites và việc sử dụng
để tạo ra các gợi ý về duyệt web cho cỏc khách viếng thăm các website đó. Một hệ thống log đặc
biệt cho phép thu thập được các dữ liệu truy cập sẽ được giới thiệu cũng như các kỹ thuật được
sử dụng cho việc khai phá dữ liệu. Ontology của các hồ sơ người dùng sẽ được xây dựng thông
qua việc khai thỏc cỏc mụ hỡnh định hướng người dùng.
Hơn nữa, việc bổ sung thêm các ứng dụng web với các dữ liệu cá nhân hóa là mợt mối quan
tâm chính nhằm cải thiện các truy cập của người dùng đến các nôi dung xuất bản, và vỡ vậy, cú
thể đảm bảo được hoạt động duyệt thông tin của người dùng được thành công. Trong mục [34],
một mô hỡnh định nghĩa cho các khuyến nghị cá nhân hóa bổ sung dựa trên việc xây dựng hồ sơ

người dùng, các mô hỡnh về lĩnh vực bản thể học (ontological domain models), và cỏc lý do ngữ
nghĩa đưa ra. Cỏch tiếp cận này cung cấp một cỏch trỡnh bày ở cấp cao về cỏc ứng dụng đó
được thiết kế dựa trên một mô hỡnh siờu đặc tả lĩnh vực (domain-specific metamodel) cho ứng
dụng Web gọi là WebML.
Việc tớch hợp dữ liệu sử dụng với nội dung, cấu trỳc hay dữ liệu hồ sơ người dùng sẽ cải
thiện kết quả của quá trỡnh cỏ nhõn húa. Trong mục [35], SEWep sẽ được trỡnh bày, đó là mợt
hệ thống tạo ra cả hai nội dung là các Logs về việc sử dụng cũng như ngữ nghĩa của nội dung
của website nhằm mục đích các nhân hóa nó. Nợi dung Web được giải thích mợt cách ngữ nghĩa

15


sử dụng việc phân cấp các khái niệm (taxonomy). C-logs sẽ được giới thiệu, đây là một dạng mở
rộng của thư viện log thông tin về quá trỡnh duyệt Web, nú sẽ bao gồm cỏc tri thức kế thừa từ
cỏc ngữ nghĩa của cỏc liên kết. C-logs được sử dụng như đầu vào cho quá trỡnh khai phỏ việc sử
dụng Web, và đưa ra kết quả là tập hợp các khún nghị được tập trung mang tính ngữ nghĩa và
rợng lớn hơn.
Thỏch thức của cỏc cụng nghệ khai phỏ Web nghữ nghĩa trong lĩnh vực học trực tuyến (eLearning) có thể liên quan đến việc dự trữ sẵn các kinh nghiệm đó được cá nhân hóa đến với
người dùng. Đặc biệt là các ứng dụng này có thể thu được các nhu cầu và yêu cầu mang tính cá
nhân của người học. Trong mục [36], có đề x́t mợt bợ khung (framework) cho việc cá nhân
hóa e-Learning dựa trên việc kết hợp các hồ sơ sử dụng và các ontology về lĩnh vực này. Những
người viết đó phõn biệt hai giai đoạn khác nhau trong cả quá trỡnh, một dành cho cỏc nhiệm vụ
offline bao gồm chuẩn bị dữ liệu, tạo ontology, và khai phá thông tin về sử dụng; và một là dành
cho các nhiệm vụ online liên quan đến việc tạo ra các khuyến nghị đến người dùng.
Việc khai phá các dữ liệu về sử dụng Web đó được sử dụng một cách hiệu quả như một
hướng tiếp cận cho việc cá nhân hóa tự đợng và coi như là cách để vượt qua các thiếu sót của các
cách tiếp cận truyền thống như việc lọc mang tính cộng tác. Bất chấp sự thành công của các vấn
đề đó, có các hệ thống, mà giống như trong các hệ thống truyền thống hơn, không đưa vào tài
khoản cỏc tri thức ngữ nghĩa về lĩnh vực liờn quan. Khụng cú cỏc tri thức về ngữ nghĩa này, cỏc
hệ thống cỏ nhõn húa khụng thể gợi ý được các loại khác nhau của các đối tượng phức tạp dựa

trên các tḥc tính cơ bản của chúng. Các hệ thống này vừa khơng thể có các khả năng diễn giải
mợt cách tự động hoặc lý do về các mô hỡnh người dùng hay các khuyến nghị với người dùng.
Việc tích hợp các tri thức ngữ nghĩa trong thực tế là thách thức chủ yếu nhất cho các thế hệ cá
nhân hóa tiếp theo. Trong mục [37], sẽ trỡnh bày nội dung khỏi quỏt về cỏc cỏch tiếp cận trong
việc sỏp nhập cỏc tri thức ngữ nghĩa vào quỏ trỡnh khai phỏ dữ liệu sử dụng Web và cỏc quỏ
trỡnh cỏ nhõn húa. Đặc biệt là sẽ có các thảo luận về các vấn đề và các đặc tả cho việc tích hợp
thành công các tri thức ngữ nghĩa từ các nguồn khác nhau, ví dụ như nợi dung và cấu trúc của
các Websites sẽ được sử dụng trong việc cá nhân hóa. Và cuối cùng, sẽ trinh bày mợt bợ khung
chung cho việc tích hợp đầy đủ các ontologies liên quan đến một lĩnh vực với quá trỡnh khai phỏ
việc sử dụng Web và cỏc quỏ trỡnh cỏ nhõn húa tại cỏc giai đoạn khác nhau, bao gồm các việc
tiền xử lý và các giai đoạn khám phá mẫu, cũng như là trong giai đoạn cuối cùng mà tại đó các
mẫu đó khỏm phỏ sẽ được sử dụng cho việc cỏ nhõn húa.
III.Việc cỏ nhõn húa và những sự bựng nổ về truy cập
Việc cá nhân hóa có thể được xác định như thiết kế, quản lý và cung cấp nội dung dựa trờn
cỏc thụng tin đó biết, quan sỏt được hoặc mang tính chất dự đốn. Các kỹ thuật cá nhân hóa kết
hợp mợt cá nhân người dùng, sở thích của anh/chị ta và các thói quen truy cập trên website, với
các nội dung dựa trên hồ sơ của người dùng đó. Trong thế giới bùng nổ thơng tin hiện nay, có rất
nhiều các cơng nghệ tương tự nhau được sử dụng như là một cách để lọc và tổ chức các dữ liệu
quan trọng nhất đối với họ.
Nếu được thực hiện chính xác, việc cá nhân hóa các kinh nghiệm của một khách viếng thăm
các trang web, sẽ làm cho những thời gian mà anh ta sử dụng trên các website, hay các ứng dụng
có hiệu quà và hâp dẫn hơn. Việc cá nhân hóa cũng có thể có giá trị đối với một tổ chức, một
cổng thông tin hay một cửa hàng trực tuyến, vỡ nú sẽ quyết định các kết quả kinh doanh mong
đợi như tăng lượng người dùng phản hồi, hoặc liên quan đến việc quảng bá thông tin đến các
khách hàng.
Trong nghiên cứu này, chúng tôi sẽ cố gắng để giải quyết trường hợp bùng nổ lượng truy cập
cá nhân vào các trang web. Rất nhiều khía cạnh trong đời sống hàng ngày được mơ tả trong sự
kiện [27]. Một số lượng lớn không mong đợi các sự kiện xảy ra trong phạm vi thời gian nhất
định được gọi là một sự bùng nổ (burst), nó sẽ dẫn đến các hành đợng hoặc các tiến trỡnh khụng
bỡnh thường. Sự bùng nổ có thể xảy ra trong rất nhiều hoàn cảnh hàng ngày từ kinh tế đến các

hiện tượng tự nhiên, ví dụ như hoạt đợng bán hàng hay sự kiện sao rơi. Phụ thuộc vào mức độ

16


quan trọng của hiện tượng hay quá trỡnh quan sỏt được, việc tỡm ra một cỏch hiệu quả cỏc sự
bựng nổ là vụ cựng cần thiết. Một cỏch cụ thể, một sự bựng nổ phụ thuộc vào phạm vi thời gian
mà chỳng ta tập trung vào, cũn gọi là kớch thước của cửa sổ.
Các sự bùng nổ cũng xảy ra đối với lưu lượng truy cập của một website, và ảnh hưởng đến
chức năng của website trên rất nhiều khía cạnh. Khi mà ngày càng có nhiều các doanh nghiệp
thương mại tham gia vào các hoạt động trên mạng, thực sự là cần thiết để làm cho các website
của họ hấp dẫn với khách hàng. Một cách để cải thiện lưu lượng truy cập của trang web đó là
thực hiện quảng cáo trực tuyến trên các máy tỡm kiếm (search engine). Trong trường hợp này,
bờn cạnh cỏc kết quả tỡm kiếm trờn trang web tỡm kiếm, sẽ cú một quảng cỏo được hiện thị
thêm vào. Một vấn đề phát sinh với việc trả tiền cho mỗi lần click vào liên kết đó là việc thực
hiện các click giả. Mợt người nào đó có thể sử dụng các đoạn mó tự động hoặc lập trỡnh để mô
phỏng mố số lượng lớn các click của một trỡnh duyệt lờn một link quảng cỏo. Và dĩ nhiờn, số
lượng click phải đủ lớn để đạt đượng lượng tiền mong muốn. Vỡ vậy, khi cú một sự bựng nổ cỏc
click cú thể được coi là các click giả.
Trong bài bỏo này, chỳng tụi sẽ xử lý với trường hợp có bùng nổ lượng viếng thăm đối với
một webpage, và làm thế nào để một người nào đó có thể thu được tri thức từ thực tế này và trợ
giúp trong việc cá nhân hóa web. Một mẫu các viếng thăm hay truy cập sẽ được coi là bùng nổ
(bursty) khi chúng xảy ra với cường độ lớn qua một giai đoạn thời gian giới hạn. Cụ thể, trong
các trường hợp bùng nổ, một vài trang web sẽ trở nên rất phổ biến trong một thời gian ngắn và
được truy cập rất thường xuyên trong một khơng gian thời gian giới hạn. Các mẫu đó cũng được
quan sát trong một số lượng lớn các ứng dụng Internet với số lượng nghiên cứu [10]. Trong các
trường hợp mẫu về tỡm kiếm web bựng nổ, người dùng cố gắng tỡm kiếm cỏc kết quả cụ thể nào
đó tḥc về các ontology giới hạn được quan tâm trong một khoảng thời gian ngắn. Như một quá
trỡnh liờn tục, cần thiết phải cú một kỹ thuật thu thập và lưu giữ hiệu quả để giữ lại những
ontology đó được cá nhân hóa và các kết quả thường xuyên của người dùng.

Chỳng ta cú một tập cỏc ontology của các Webpages và một số lượng truy cập ngẫu nhiên
được thực hiện đến tất cả các Webpages bởi các người dùng. Chúng ta xác định một tập các
webpages được người dùng mong muốn khi các webpages này trở thành các trang được viếng
thăm nhiều nhất xác định bởi số lượng viếng thăm được ghi lại trong từng khoảng thời gian nhất
định. Cụ thể hơn, chúng ta sẽ đếm đối với mỗi webpage, xem có bao nhiêu truy cập đó được thực
hiện từ lần cuối cùng nó đó được viếng thăm. Nếu con số này là đủ để xác nhận trang web này
được yêu thích và thời gian mà các truy cập được thực hiện thỏa món, thỡ cỏc mẫu truy cập này
được coi là sự bùng nổ về truy cập.
Vỡ sự quỏ tải của cỏc webpages, việc xử lý cỏc ontology cung cấp nhiều thuận lợi hơn, từ
khi nó giúp sáng tỏ được vấn đề. Với việc tăng đều của số lượng các webpages, nó đó trở thành
mợt vấn đề khó với mợt người dùng để có thể định vị được những thông tin mà mỡnh mong đợi
trên một website. Để người sử dụng được đơn giản, có rất nhiều các website có thể tổ chức các
webpages của họ thành cỏc ontology nhằm hỗ trợ trong việc tỡm kiếm một webpage dựa trờn
việc ấn định chúng với mợt ontology.
Do đó, mục đích của chúng ta là làm sao thu lại được những lợi ích của việc tổ chức các
Webpages thành các ontologies và sử dụng chúng trong việc xử lý cỏc bựng nổ về truy cập đế
một ontology xác định của Webpages. Ví dụ, chúng tơi giả sử rằng mợt dùng thường xuyên
viếng thăm một ontology nhất định của một website cửa hàng trực tuyến và vỡ mục đích thương
mại, anh ta viếng thăm ontology của video và âm thanh. Tại điểm này, mợt kỹ thuật cá nhân hóa
web nhằm xử lý cỏc bựng nổ về truy cập, nờn được cung cấp tới người dùng và các ontology của
các webpages mà người dùng đó lựa chọn ra ontology về video và õm thanh cũng được viếng
thăm.
IV. Cỏc trang web và các đối tượng bản thể (Ontologies)

17


Trước khi mơ tả thuật tốn về cá nhân hóa của chúng tơi, chúng tơi sẽ phải giải thích về cách
mà các trang web có thể được ấn định tương ứng với các đối tượng bản thể (ontologies).
Ontology trong khoa học máy tính là đối tượng diễn tả các thực thể, ý tưởng hay các sự kiện,

cùng với các thuộc tính và mối quan hệ của chúng, tương ứng với một hệ thống ontology cụ thể.
Chúng tôi sẽ sử dụng cơng cụ phân tích log của Web có tên ORGAN, cung cấp mợt giải pháp
tích hợp trong việc phõn tớch quỏ trỡnh xõy dựng và thực hiện, thực hiện trờn cả cỏc ngữ nghĩa
về nội dung của site cũng như việc viếng thăm các trang web. Thông tin về sở thích của người
dùng liên quan đến các chủ đề của website sẽ được trích rút ra, sau đó được kết hợp với ORGAN
như là một ứng dụng trong quá trỡnh ra quyết định của người quản trị về việc tổ chức lại cấu trúc
của Website. Do đó, trước khi sử dụng thuật tốn cá nhân hóa của chúng tơi trên site, chúng tôi
sử dụng công cụ ORGAN để quy các trang web của website về cỏc Ontology phự hợp.
V. Mô tả vấn đề (bài tốn)
Chúng ta sẽ mơ tả bài tốn như sau: chúng ta có mợt tập hợp P ontologies của các webpages
và N users. Mỗi Webpage thuộc về một ontology nhất định và mỗi hồ sơ người dùng được lưu
trong một cây mở rộng (splayed tree). Giống như hồ sơ, chúng ta định nghĩa các “logfile” của
các webpages mà người dùng đó ghợ thăm. Trong cây mở rợng, chúng ta lưu các ontology của
các webpages. Tùy thuộc theo các tḥc tính của cây mở rợng, hạng mục được viếng thăm cuối
cùng sẽ được đưa về gốc của cây. Trong trường hợp của chúng ta, chúng ta sẽ chỉnh sửa lại cây,
vỡ vậy hạng mục được truy cập thường xuyên nhất sẽ là hạng mục được đưa về nút gốc. Trong
thực tế, chúng ta hướng đến mở rộng một ontology khi chúng ta quan sát thấy có sự bùng nổ về
lượng viếng thăm đến nó. Sau khi mợt ontology được mở rợng về nút gốc do có sự bùng nổ về
truy cập, sẽ không cần phải cấu trúc lại hay mở rộng lại cây. Vỡ vậy, cỏc ontology xuất hiện ở
cỏc mức trờn của cõy mở rộng của mỗi người dùng sẽ là nhưng hạng mục thuộc về sở thích của
người dùng đó.

18


Từ lúc chúng ta giữ hồ sơ của mỗi người dùng, chúng ta mong muốn xây dựng được cấu trúc
dữ liệu mà sẽ lưu các ontology phổ biến nhất mà được nhiều người viếng thăm nhất website A
cũng mong muốn được viếng thăm nhất. Vỡ vậy, đối với mỗi ontology, chúng ta xây dựng một
hàng đợi. Hàng đợi mà chúng ta đó lựa chọn cho cỏc mục đích nói trên được sử dụng là các đống
nhị phân (binary heap). Mỗi một ontology giữ một đống nhị phân với các ontology khác và mức

độ phổ biến của chúng. Tùy thuộc vào các tḥc tính của hàng đợi ưu tiên, ở nút gốc, chúng ta
lưu giá trị key nhỏ nhất và do đó chúng ta có thể truy cập chúng trong thời gian là O(1). Chúng
ta lưu lượng phổ biến của mỗi ontology bằng dấu (-), nhằm giữ được giá trị lớn nhất trong nút
gốc của hàng đợi ưu tiên. Mỗi lần chúng ta quan sát thấy có sự bùng nổ về viếng thăm đến một
topology A, chúng ta sẽ tăng một đơn vị đếm của độ phổ biến của ontology này trong tất cả các
hàng đợi ưu tiên của các ontology tỡm thấy trong mức cao nhất của cây mở rộng của mỗi người
dùng xác định. Ngoài ra chúng ta cũn tăng lượng đếm của các ontology này trong hàng đợi ưu
tiên của ontology A. Do đó, chúng ta có thể rút ra được ontology nào là phổ biến nhất đối với
người dùng mà đó viếng thăm ontology A trong mợt thời gian cố định.
Phụ thuộc vào điều kiện nếu trong cây mở rộng, chúng ta lưu các ontology của Webpages, có
thể sẽ có mợt cách tiếp cận khác. Trong trường hợp Webpages, để đảm bảo rằng, có ít nhất mợt
phần lớn các trang của một ontology sẽ được mở rộng về đến nút gốc, chúng ta có thể tuân theo
kỹ thuật dưới đây. Chúng ta giả sử rằng một trang x được truy cập thời gian k, đủ để xác định
rằng trang này là trang được truy cập thường uyên nhất. Khi đó, từ khi nút cha của nút này thuộc
về cùng ontology, chúng ta sẽ duyệt cây từ dưới lên. Ngưỡng trên của số lượng của các cấp mà

19


chúng ta duyệt lên sẽ phụ thuộc vào số lượng của các ontologies và Webpages. Cho z là nút được
duyệt trước cuối cùng của nốt x thuộc về cùng ontology với x. Khi đó chúng ta sẽ mở rợng tất cả
các nút tḥc về cây con của nó về với nút gốc. Tiếp theo, chúng ta muốn phân biệt/ đánh dấu
các ontology được viếng thăm nhiều nhất bởi người dùng. Các ontologies gần với nút gốc của
cây, là các nút được ưa thích bởi người dùng. Vỡ vậy, vấn đề duy nhất cũn lại để qút định đó
là đợ sâu của cây, giá trị sẽ thể hiện giới hạn, phía trên đó tất cả các ontologies đều được coi là
được người dùng ưa thích.
Thuật toỏn
1. Khi (Webpage A của ontology W được truy cập bởi người dùng.
/* Thu thập cỏc thụng tin từ file log của webpage*/
2. Nếu (truy cập này tạo ra một bùng nổ về truy cập đến ontology W)

3. Thỡ
/* Sắp xếp lại cây splay của người dùng, từ đó ontology với mẫu truy cập bùng nổ cuối
cùng sẽ được đưa về nút gốc*/
4. Di chuyển (splay) ontology W về nút gốc của cây mở rộng của người dùng
/* Cập nhật hàng đợi ưu tiên của các ontologies nhằm đưa ra được các ontologies phổ
biến của người dùng*/
5. Định nghĩa tập hợp các ontologies, TOP, đó tồn tại trong cỏc level cao nhất của cõy mở
rộng
6. Tăng số đếm của W trong tất cả các hàng đợi ưu tiên của các ontologies thuộc về TOP
7. Tăng số đếm của các ontologies thuộc về TOP trong hàng đợi ưu tiên của W
8. Trả về như đó khuyến nghị nỳt gốc của hàng đợi ưu tiên của W
9. endif
10. else
11. continue
VI. Phõn tớch
A. Yờu cầu về khụng gian
Khi chúng ta quan tâm đến độ phức tạp về không gian, ở đây không gian, theo mong đợi
sẽ chủ yếu là không gian được tạo ra bởi hai cấu trúc dữ liệu.
- Các cây Splay: Chúng ta cần một cây splay cho mỗi người dùng. Trong trường hợp xấu
nhất, tại mỗi một cây Splay chúng ta sẽ lưu W webpages. Vỡ vậy, nếu dựa trờn cỏc
trường tăng thêm cần thiết cho mỗi nút của cây Splay, không gian cần thiết sẽ là 5.N.W
- Hàng đợi ưu tiên: đối với mỗi ontology, chúng ta sử dụng một hàng đợi ưu tiên. Vỡ
vậy, đối với P ontologies, chúng ta sẽ mất một khụng gian là O(P2).
B. Yờu cầu về thời gian
Nếu liên quan đến độ phức tạp về thời gian, mỗi một truy cập sẽ cần:
- ụ.log(Ŵ/ŵ), cho ụ nỳt của cõy Splay. Giỏ trị này cũng chớnh là ụ.log(#pages).
- Chúng ta cần thời gian O(1) để quay trở lại nút gốc của cây từ mỗi hàng đợi ưu tiên. Vỡ
vậy sẽ mất N.O(1) để có thể giới thiệu mợt ontology đến N người dùng.
Cuối cùng, chúng ta cần cập nhật các hàng đợi ưu tiên. Nói cách khác, trước khi giới
thiệu nút gốc của một hàng đợi ưu tiên của ontology, chúng ta phải tăng các khóa của các


20


ontology mà chúng ta tỡm thấy trong sở thớch của người dùng, nếu họ đó hoàn toàn nằm
trong hàng đợi ưu tiên của ontology đó được mở rợng (splayed). Cuối cùng, chúng ta
phải tăng khóa của ontology đó được mở rợng đó, trong tất cả các hàng đợi ưu tiên của
mức cao nhất của cây mở rộng của người dùng. Nghĩa là nếu tính tổng, ta sẽ mất k.logP
thời gian.
VII. Tổng kết và các công việc trong tương lai
Các thuật tốn về khún nghị và cá nhân hóa có mục tiêu là giới thiệu các trang web đến
người dùng dựa trên nội dung mà họ đang truy cập và các mẫu duyệt web trong quá khứ của họ.
Trong bài báo này, chúng tôi đưa ra một kỹ thuật cá nhân hóa web, dựa tren các cấu trúc dữ liệu
tiên tiến. Khái niệm chính của việc này là đối phó với trường hợp bùng nổ về lượng truy cập đến
một trang web thơng qua việc xây dựng mợt thuật tốn có tác dụng giới thiệu đến những người
viếng thăm trang web của một đối tượng ontology cụ thể của các trang web A, các đối tượng
ontologies của trang web mà những người viếng thăm A trước đó cũng mong muốn được duyệt
qua. Các cấu trúc dữ liệu được sử dụng là Cây Splay (1) và Các đống nhị phân (Binary heaps)
(2). Chúng tôi mô tả kiến trúc của kỹ thuật cũng như phân tích đợ phức tạp về khơng gian và thời
gian. Giải pháp của chúng tơi đạt được đợ chính xác về không gian là O(P 2) và chạy mất thời
gian là k.logP trong đó k là số lượng các trang và P là số lượng của các ontologies.
Các bước nghiên cứu tiếp theo trong tương lai bao gồm việc cải tiến các thuật toán nhằm đưa
vào tài khoản người dùng những phản hồi không rừ ràng của người dùng về các lựa chọn sản
phẩm cuối cùng, không chỉ là các cửa hàng hay các dịch vụ trực tuyến. Đây là trường hợp đặc
biệt hiệu quả cho các hoạt động thực hiện về kinh doanh trực tuyến (e-businesses) dựa trên các
dịch vụ Web di động RESTful gọn nhẹ.

21



KẾT LUẬN
Splay tree được các tác giả D.D.Sleator và R.E.Tarjan đưa ra năm 1983. Splaying
cây nhằm mục đích giảm bớt tổng thời gian truy cập dữ liệu bằng cách dịch chuyển các
dữ liệu được thường xuyên truy cập lên gần gốc cây, và vì vậy sự truy cập tới các dữ liệu
đó sẽ nhanh hơn. Ưu điểm của Splay cây là chúng ta không cần lưu thông tin về sự cân
bằng của các đỉnh, và do đó, tiết kiệm được bộ nhớ và sự cài đặt cũng đơn giản hơn.
Vì thời gian có hạn nên chưa thể nghiên cứu sâu cũng như tìm hiểu nhiều hơn nữa
các ứng dụng của splay tree. Rất mong nhận được sự đóng góp ý kiến của thầy giáo và
các học viên khác.

22


TÀI LIỆU THAM KHẢO
[1]. Giáo trình thuật toán. NXB Thống kế 2002. Nhóm Ngọc Anh Thư dịch
[2]. Slide Bài giảng môn học Cấu trúc dữ liệu nâng cao. TS Nguyễn Mạnh Hùng
[3]. Tài liệu COMP670 online Algorithm – Self-organized – Splay Tree. Hung Lau Yung
[4]. Handbook of Data Structures and applications. 2005. Dinesh P.Mehta và Sartaj
Sahni.
[5]. Các cấu trúc dữ liệu cao cấp. Website congdongCviet.com

23



×