Hình 5 10

Một phần của tài liệu LUẬN VĂN:PHÂN TÍCH MẠNG XÃ HỘI BẰNG CÔNG NGHỆ WAVE - PHÂN TÍCH QUAN HỆ docx (Trang 63 - 78)

Hình 5 3

Phn 1: Tìm cây đường đi ngắn nhất (loang theo chiều rộng):

Đặt chuỗi WAVE vào node A. Di chuyển tới các node hàng xóm của A là B, C, D – mũi

 

Hình 5 4

Từ các node B, C, D di chuyển tới các node có đường nối trực tiếp với B, C, D – mũi

tên màu xanh biển. Do có ba nhánh WAVE nên chuỗi WAVE sẽ di chuyển tới các node

B, C, D, E, F, G. Ở các node B, C, D, biến Nback đã có giá trị. Nên chuỗi WAVE sẽ bị

dừng. Còn ở ba node E, F, G biến Nback vẫn có giá trị NONE – node chưa được thăm

nên chuỗi WAVE sẽ tiếp tục lan tỏa. Từ E, F, G chuỗi WAVE lại tiếp tục lan tỏa tới hai

node chưa được thăm là H và I. Ở hai node H và I, chuỗi WAVE dừng do không tìm

thấy node nào chưa thăm.

 

Phn 2: Lần vết tìm chuỗi đường đi giữa hai node:

 

Hình 5 6

Nhảy tới node đích là node H. Gán biến Fpath=C – với C là nội dung (tên) của node

H. Di chuyển tới node G - chứa trong biến Nback của nod H. Gán Fpath:0=C (tức tên

của node G). Di chuyển tiếp tới node B – chứa trong biến Nback của node G. Fpath

giờ đang là [H,G] sẽđược gán Fpath:0=C và sẽ chứa các giá trị [H,G,B]. Tiếp tục di

chuyển tới node A – chứa trong biến Nback của node B và gán Fpath:0=C. Fpath giờ

node `stop’ không tồn tại nên vòng lặp trong chuỗi WAVE sẽ dừng. Và ta có đường đi

ngắn nhất giữa hai node A và H chứa trong biến Fpath=[H,G,B,A]

5.2.2 Cài đặt 

Gi mã:

B1: Nhảy tới node khởi đầu. Nback=`stop'.

B2: Nhảy tới tất cả các bạn bè của node đang đứng. Nếu Nback==NONE, gán Nback=P. Nếu Nback /= NONE, không làm gì cả.

B3: Nếu còn Nback==NONE, Lặp lại bước 2. Nếu không sang bước 4. B4: Nhảy tới node đích. Fpath=Tên node.

B5: Nhảy tới nút trước nút hiện tại. Gán Fpath:0=Tên node. Lặp lại bước 5 tới khi nào không thể nhảy tới nút trước nó (khi Nback=`stop')

B6: In ra đường đi ngắn nhất (nếu có).

Lưu đồ thut toán: (adsbygoogle = window.adsbygoogle || []).push({});

 

Hình 5 7

 

Wave code: SQ( (@#`blogsource'.Nback=`stop'. RP(##.(Nback==NONE.Nback=P))), (@#`blogdesti'.Fpath=C.RP(#Nback.Fpath:0=C).T=Fpath) )

5.3 Bài toán tìm Đường kính 

Định nghĩa đường kính của một đồ thị: Đường đi ngắn nhất giữa hai node trong đồ

thị được gọi là khoảng cách giữa hai node đó. Khoảng cách dài nhất giữa hai node

trong đồ thị gọi là đường kính của đồ thị.

Với đồ thị trong hình 9, khoảng cách giữa node D và node H chính là đường kính của đồ thị với độ dài đường kính là 3.

 

Hình 5 9

Thuật toán tìm đường kính: Bài toán tìm đường kính của đồ thị có thể coi là một bài toán mở rộng của bài toán tìm cây đường đi ngắn nhất. Ta tìm đường đi ngắn nhất giữa tất cả các cặp node trong đồ thị, và đường kính tương ứng sẽ là đường dài nhất trong số những đường ngắn nhất. Để giải quyết bài toán một cách hiệu quả, ta đặt chuỗi

wave vào tất cả các node trong đồ thị và tìm kiếm cây đường đi ngắn nhất của tất cả các node một cách song song. Độ dài đường đi ngắn nhất từ tất cả các node khác trong đồ thị tới node hiện tại được lưu tại một biến cục bộ tại node hiện tại, biến này có dạng vector, với mỗi phần tử là một khoảng cách tới một node trong đồ thị. Để xác định chính xác khoảng cách nào ứng với node nào từ node hiện tại, ta sử dụng một biến cục bộ khác lưu địa chỉ của node đi kèm biến lưu khoảng cách. Biến này cũng có dạng vector với các phần tử là tên của các node trong đồ thị, các phần tử trong vector khoảng cách và vector tên node được xếp một cách tương ứng nhau.

Ví dụ với node hiện tại là node A:

Biến vector Ndistance lưu khoảng cách:

1 1 1 2 2 2 3 4

Biến vector Nsource lưu tên các phần tử ứng với khoảng cách lưu tại biến Ndistance: B C D E F G H I

Sau khi thực một cách song song hiện thuật toán tìm cây đường đi ngắn nhất tại tất cả các node, chúng ta nhận được ở biến Ndistance ở mỗi node khoảng cách từ node đó tới tất cả các node còn lại trong đồ thị. Khoảng cách lớn nhất trong những khoảng cách này (tính ở tất cả các node) – gọi là đường kính – được tìm qua hay bước: Đầu tiên tìm khoảng cách lớn nhất cục bộ trong các phần tử của vector Ndistace tại mỗi node, sau đó tìm khoảng cách lớn nhất toàn cục là giá trị lớn nhất của các khoảng cách cục bộ.

 

Hình 5 10

Chương trình wave sử dụng để thực hiện việc tìm đường kính của đồ thị:

Flocal_max= {REPEAT(

Next=Ndistance:1. Next/=NONE. Ndistance:1=NONE. (Next>Nmax. Nmax=Next. DONE!), STAY

) }. SEQUENCE( (DIRECT#ALL.Fsource=CONTENT. Flength=0. REPEAT( (

Findex = Nsources:: Fsource. OR_SEQUENCE(

(Findex==NONE. Nsources & Fsource.

Ndistances & Flength

),

(Flength<Ndistances:Findex. Ndistances:Findex=Flength

) ) (adsbygoogle = window.adsbygoogle || []).push({});

).ANY#ALL. Flength+1 )

),

(DIRECT#ALL. ^Flocal_max. Ftransit=Nmax. DIRECT#PREDECESSOR.

(Ftransit>Nmax. Nmax = Ftransit) ),

TERMINAL=Nmax )

Việc lan tỏa để tìm cây đường đi ngắn nhất trên một phạm vi lớn (hàng trăm nghìn tới hàng triệu node) là tương đối lâu, hơn nữa với đồ thị có hàng trăm nghìn node thì số lượng phần tử trong hai vector Ndistances và Nsources cũng sẽ lên tới hàng trăm nghìn, và cũng như để tránh việc mỗi lần tìm đường kính ta lại phải tìm kiếm cây đường đi ngắn nhất của toàn bộ mạng. Chúng ta sẽ cải tiến thuật toán tìm đường kính, thay vì mỗi lần tìm đường kính lại thực hiện thuật toán tìm kiếm cây đường đi ngắn nhất trên toàn bộ node của đồ thị, ta làm việc này một lần duy nhất và lưu khoảng cách lớn nhất của mỗi node tới các node khác trong đồ thị vào cơ sở dữ liệu.

 

Để đi tìm đường kính của một đồ thị có n node. Chúng ta phải đi tìm khoảng cách giữa tất cả các node với nhau. Gọi D(i,j) là khoảng cách giữa node i với node j (i khác j, i,j trong khoảng từ 1 tới n). Giá trị lớn nhất Max(D(i,j)) chính là đường kính cần tìm. Đồng thời, cần xác định hai node i, j và chuỗi các node nối hai node i và j.

Chuẩn bị dữ liệu (phân tích dữ liệu thô): Ở mỗi node của đồ thị, thực hiện thuật toán tìm cây đường đi ngắn nhất. Thuật toán tìm cây đường đi ngắn nhất chính là thuật toán loang theo chiều rộng. Mỗi lần loang rộng, ta tăng biến Fd đếm khoảng cách từ node nguồn tới node hiện tại. Sau khi loang xong toàn bộ độ thị, biến Fd chứa giá trị là khoảnh cách từ node nguồn tới node xa nhất trong đồ thị. Ta đưa lưu Fd vào cơ sở dữ liệu. Việc tìm Fd và đưa vào cơ sở dữ liệu được thực hiện gần như song song trên các node. Đoạn mã wave thực hiện việc tìm khoảng cách lớn nhất từ một node tới các node còn lại trong đồ thị và đưa khoảng cách tìm được vào cơ sở dữ liệu:

@#`blogID'.Nd=0.Fd=0. SQ(

(RP(#.Nd==NONE.Fd+1.Nd=Fd.Nb=P).@#`"+blogID+"'.Nmax=Fd),

T=Nmax.Fa=1;1;Ft=`blogID'.Ft&Nmax.Fa&Ft.Fa?getRequestedBlog ).@#.Nd=NONE

Fa chứa hai tham số là blogID và giá trị của Nmax, lớp getRequestedBlog sẽ thực hiện việc đưa giá trị biến Nmax vào cơ sở dữ.

Sau khi tìm được khoảng cách xa nhất cho tất cả các node của đồ thị và lưu vào cơ sở dữ liệu. Việc tìm kiếm và phân tích sẽ trở nên thuận tiện hơn rất nhiều.

Tìm đường kính của đồ thị từ các dữ liệu đã lưu trong cơ sở dữ liệu: đường kính chính là giá trị lớn nhất của DMax được lưu trong cơ sở dữ liệu. Truy vấn cơ sơ dữ liệu lấy ra blogID và khoảng cách Dmax lớn nhất. Thực thi đoạn mã WAVE sau đây để tìm ra chuỗi các node tạo thành đường kính của đồ thị:

@#`"+blogID+"'.Nd=0.Fd=0.Nb=`stop'. SQ( (RP(#.Nd==NONE.Fd+1.Nd=Fd.Nb=P.Fdes=C). @#`"+blogID+"'.Nd=Fd.Nde=Fdes), @#Ndes.Fpath=C.RP(#Nb.Fpath:0=C).@#`"+blogID+"'.Np=Fpath )

5.4 Bài toán tìm Tâm và Bán kính 

Một khái niệm quan trọng khác trong đồ thị là tâm của đồ thị. Tâm của đồ thị là một node mà khoảng cách lớn nhất từ node đó tới một node khác bất kì trong đồ thị là nhỏ nhất. Bán kính là độ dài khoảng cách từ tâm tới node xa nhất trong đồ thị.

 

Hình 5 12

Ví dụ như với đồ thị Hình 5 12 tâm của đồ thị là B và bán kính của đồ thị là khoảng cách từ B tới node xa nhất là 2. A không thể là tâm vì khoảng cách từ A tới node xa nhất – node H - là 3, lớn hơn khoảng cách từ B tới H

Thuật toán: Để tìm node có khoảng cách tới một node bất kì trong đồ thị là ngắn nhất so với các node khác, với tất cả các node trong đồ thị, ta tìm khoảng cách xa nhất từ node đó tới các node còn lại trong đồ thị. Trong các khoảng cách tìm được, node nào có khoảng cách ngắn nhất chính là tâm của đồ thị.

Ta có thể sử dụng kết quả tìm cây đường đi ngắn nhất của bài toán tìm đường kính trong đồ ở phần 5.3, bán kính cần tìm chính là giá Dmax nhỏ nhất được lưu trong cơ sở dữ liệu.

CHƯƠNG 6: KẾT QUẢ  6.1 Kết quả thực nghiệm 

Chương trình được chạy thử trên một vài điều kiện thử nghiệm khác nhau được trình bày trong các bảng sau.

Thời gian cần thiết để thu thập thông tin về khoảng 20.000 blog khác nhau Số máy Số nút Thời gian vận hành Điều kiện thiết bị

1 20.503 27’45’’ ADSL 4Mbps

Thời gian cần thiết để tạo lập Mạng tri (3 lần test)

Số máy Số nút Filter Cách thức tạo

chuỗi WAVE Thời gian vận hành 1 20.411 HashCode Short 44s 2 20.411 HashCode Short 55s 4 20.503 HashCode Long 26s 2 20.503 HashCode Long 29s 6.2 Kết luận  (adsbygoogle = window.adsbygoogle || []).push({});

Khóa luận tốt nghiệp đã trình bày tổng quan về công nghệ WAVE và ứng dụng của công nghệ này vào các bài toán phân tích mạng xã hội Yahoo!360.

Với việc phát triển thành công một ứng dụng nhỏ dựa trên nền tảng WAVE có chức năng thu thập thông tin về các blog Yahoo!360, sau đó tiến hành tạo dựng mạng tri thức trong WAVE tương ứng với các thông tin về đối tượng và quan hệ giữa các đối tượng thu thập được, cộng với những kết quả thực nghiệm tương đối khả quan về hiệu năng của hệ thống, tôi tin tưởng rằng đây sẽ là cơ sở cho việc phát triển các ứng dụng lớn hơn nhằm hỗ trợ tối đa cho việc phân tích, định hình thông tin đang tồn tại trên các mạng xã hội hiện nay. Từ đó giúp giải quyết rất nhiều các bài toán nghiên cứu ứng

dụng đang được đưa ra để phân tích về các hoạt động của con người dựa trên việc mô phỏng hoạt động ấy trên mạng xã hội.

TÀI LIỆU THAM KHẢO  TÀI LIỆU TIẾNG ANH

[1] Borst, P.M., H.-T Goetz, P. S. Sapaty, and W. Xorn, “Paralled Knowledge Processing in Open Networks,” Proc. International Conference and Exhibition “High-Performance Computing in Networks” (HPCN Europe ‘94), Munich, Germany, April 1994.

[2] Corbin M. J., and P. S. Sapaty, “Distributed Object-Based Simulation in Wave,” J. Simul. Pract. Theory, Vol. 3, No.3, pp. 157-181, 1995.

[3] Livatharas, C., “Integration of Heterogeneous Databases Using WAVE,” M.Sc. Project Report, Department of Electrical Engineering, University of Surrey. Surrey, England, August 1995.

[4] Peter Sapaty, “Mobile Processing in Distributed and Open Environments”, Wiley-Interscience, 1998.

[5] Sapaty, P.S., “The Wave-0 Language as a Framework of Navigational Structures for Knowledge Bases Using Semantic Networks,” Proc. USSR Academy of Sciences: Technical Cybernetics, No. 5, 1986 (in Russian). [6] Tan, H. K. V., “Distributed Dynamic 3D Virtual Reality,” M. Sc Telematics

Diploma Project (based on WAVE), Department of Electrical Engineering, University of Surrey, Surrey, England, 1997.

[7] Varbanov, S. and P. S. Sapaty, “An Information System Based on the Wave Navigation Techniques,” Abstr. International Conference, AIMSA’86, Varna, Bulgaria, 1986.

[8] Vuong, S., and I. Ivanov, “Mobile Intelligent Agent Systems: WAVE vs. JAVA,” Proc., etaCOM’96, Portland, Oreg., May 1996.

TRANG WEB THAM KHẢO

[9] http://360.yahoo.com

[10] http://en.wikipedia.org/wiki/Full_text_search

[11] http://en.wikipedia.org/wiki/List_of_social_networking_websites

[12] http://en.wikipedia.org/wiki/Micro_blogging

[14] http://en.wikipedia.org/wiki/Short_message_service [15] http://en.wikipedia.org/wiki/Small_world_phenomenon [16] http://en.wikipedia.org/wiki/Social_network_analysis_software [17] http://en.wikipedia.org/wiki/Social_networking_service [18] http://en.wikipedia.org/wiki/Uniform_Resource_Locator [19] http://en.wikipedia.org/wiki/User_profile [20] http://kaspersky.nts.com.vn/tin-tuc/tin-bao-mat/252 [21] http://lucene.apache.org/solr/ [22] http://lucene.apache.org/nutch/about.html [23] http://openid.net/ [24] http://tokyocabinet.sourceforge.net/spex-en.html [25] http://twitter.com/ [26] http://vi.wikipedia.org/wiki/L%C3%BD_thuy%E1%BA%BFt_%C4%91%E1% BB%93_th%E1%BB%8B [27] http://vi.wikipedia.org/wiki/M%E1%BA%A1ng_x%C3%A3_h%E1%BB%99i [28] http://www.alexa.com/ [29] http://www.classmates.com/ [30] http://www.everyday-wisdom.com/social-networking.html [31] http://www.facebook.com/ [32] http://www.friendster.com/ [33] http://www.ietf.org/rfc/rfc1321.txt [34] http://www.myspace.com/ [35] http://www.mysql.com/ [36] http://www.oracle.com/technology/products/berkeley-db/index.html [37] http://www.thethaovanhoa.vn/312N20090415112243434T350/mang-xa-hoi- sap-xung-hung-xung-ba.htm [38] http://www.tin247.com/facebook_tang_truong_phi_ma-4-21396358.html [39] http://www.whatissocialnetworking.com/ [40] http://www-ksl.stanford.edu/kst/what-is-an-ontology.html

Một phần của tài liệu LUẬN VĂN:PHÂN TÍCH MẠNG XÃ HỘI BẰNG CÔNG NGHỆ WAVE - PHÂN TÍCH QUAN HỆ docx (Trang 63 - 78)