Tải bản đầy đủ (.pdf) (29 trang)

báo cáo phân cụm cộng đồng bằng giải thuật di truyền

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 (1.16 MB, 29 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────

BÁO CÁO MÔN
TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:

PHÂN CỤM CỘNG ĐỒNG
BẰNG GIẢI THUẬT DI TRUYỀN
Sinh viên thực hiện

: Phạm Trần Tuấn

-20112449

Nguyễn Minh Vương
Nguyễn Văn Luân
Nhóm

-2011

-20111825

: áp chót

Giáo viên hướng dẫn : GS.TSKH. Nguyễn Nhật Quang


Nội dung
Chương I : Cơ sở lý thuyết


1.Lý thuyết đồ thị
2.Bài toán Phân cụm Cộng đồng
3.Thuật giải Di truyền
4.Áp dụng thuật giải di truyền

Chương II : Thiết kế chi tiết và Cài đặt thuật toán
1.Xây dựng ý tưởng và thiết kế
2.Lập trình chương trình phát hiện Cụm cộng đồng

Chương III: Kết luận
1.Kiểm thử
2. Hướng phát triển
TÀI LIỆU THAM KHẢO

PHỤ LỤC


Danh mục Hình ảnh

Figure 1 Một ví dụ đơn giản về 1 đồ thị có 3 cụm cộng đồng
Nguồn : [5]
Figure 2 Mô tả cách biểu diễn lời giải
Nguồn : [9]
Figure 3 Một tả phương án Giao phối
Nguồn : [9]
Figure 4 File mô tả đồ thị của mạng cá heo
Nguồn : Cá nhân
Figure 5 Một kết quả được đưa ra
Nguồn : Cá nhân
Figure 6 Demo chương trình trên nền console

Nguồn : Cá nhân
Figure 8:Minh họa bằng hình vẽ kết quả của hệ thống đối với đồ thị tiêu chuẩn Karate Zachary
Nguồn : Internet
Figure 9: Kết quả kiểm thử hệ thống dựa trên đồt thị tiêu chuẩn các chú cá Heo
Nguồn : Cá nhân
Figure 10 : Minh họa kết quả kiểm thử dựa trên mạng lưới các chú cá Heo
Nguồn : Internet


LỜI NÓI ĐẦU
Trí tuệ nhân tạo hay trí thông minh nhân tạo (hay machine intelligence, thường được viết
tắt là AI) là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào. Thuật ngữ này thường
dùng để nói đến các máy tính có mục đích không nhất định và ngành khoa học nghiên cứu về các
lý thuyết và ứng dụng của trí tuệ nhân tạo. Ngành khoa học về trí tuệ nhân tạo là một trong
những ngành trọng yếu của tin học. Bởi vậy, trí thông minh nhân tạo đã trở thành một môn học,
với mục đích chính là cung cấp lời giải cho các vấn đề của cuộc sống thực tế. Trường Đại học
Bách Khoa Hà Nội đã tạo điều kiện cho chúng em được tiếp thu môn học này. Để có thể nắm
chắc hơn các khái niệm, vấn đề cơ bản liên quan đến trí tuệ nhân tạo cũng như hiểu rõ hơn các
ứng dụng trong thực tế của trí tuệ nhân tạo, chúng em đã thực hiện đồ án với đề tài: “Áp dụng
Giải thuật di truyền vào bài toán phân cụm cộng đồng”. Chúng em xin gửi lời cảm ơn chân thành
đến thầy Nguyễn Nhật Quang đã tận tình giúp đỡ chúng em hoàn thành đồ án này.
Nhóm sinh viên
Phạm Trần Tuấn
Nguyễn Minh Vương
Nguyễn Văn Luân


CHƯƠNG I . CƠ SỞ LÝ THUYẾT

1. Lý thuyết đồ thị (Graph Theory)

Lý thuyết đồ thị được khởi nguồn từ giải đáp của Euler cho câu đố những chiếc cầu của Konigsberg.Từ
đó đã xuất hiện rất nhiều nghiên cứu về Đồ thị (Graph) và các đặc tính toán học của nó.Trong thế kỷ
21,Đồ thị đã được coi là một cách mô tả cho nhiều loại mạng,hệ thống (system) của nhiều ngành khác
nhau.Những mạng lưới Sinh học,Xã Hội,Công nghệ và Thông tin đều có thể coi như là các Đồ thị ,và
việc phân tích chúng-tương đương với việc phân tích các Đồ thị-đã trở thành một công việc quan trọng
nhằm hiểu rõ các đặc tính của hệ thống,mạng.Cũng trong thời gian gần đây với sức mạnh tính toán của
kỷ nguyên máy tính,và nhu cầu cần thiết để xử lý với các hệ thống,mạng lớn, chúng ta đã có thể tiếp cận
với Đồ thị một cách hoàn toàn khác biệt với truyền thống,thông qua máy tính - sức mạnh của máy tính
đã được tham gia trong việc nghiên cứu,phát hiện đặc tính của các Đồ thị mô tả các hệ thống,mạng thực
tế.
Một mạng (Network) có để được biểu diễn dưới dạng toán học bởi một đồ thị bao gồm 1 tập các đỉnh
(vertex) ,được ký hiệu là
(mỗi đỉnh thể hiện một đối tượng của mạng mà ta sẽ xử lý với nó)
và một tập các cạnh (edge) ký hiệu là
,mỗi cạnh có hai mút là hai đỉnh ,cạnh biểu thị một mối
quan hệ một-một giữa hai đối tượng trong mạng.
Bậc (degree) của một đỉnh đó là số cạnh mà chứa đỉnh đó,nếu ký hiệu
) tạo nên dãy bậc của đồ thị G.

là bậc của

,thì khi đó

Một khái niệm khác để mô tả rõ hơn về bậc trong đồ thị G đó là phân phối bậc của đồ thị : lấy
là số
đỉnh có bậc .Có thể thay dãy bậc của đồ thị bằng các phân phối bậc , một đồ thị mà có các phân phối
bậc là như nhau thì đồ thị đó được cho là có tính chính quy (regular).
Đồ thị biểu diễn các Hệ thống thực tế (Real system) là không chính quy (un regular-like).Chúng là các
đối tượng bao hàm cả sự không phân cấp (disorder) và cả phân cấp (order).
Một mô thức của đồ thị không phân cấp là đồ thị ngẫu nhiên (random graph)– được đề xướng bởi

P.Erdos và A.Renyi .Với các đồ thị ngẫu nhiên của Erdos và Renyi thì nó có xác suất xuất hiện cạnh
giữa một cặp đỉnh là bằng nhau,vì vậy hầu hết các đỉnh đều có bậc tương tự như nhau.Nó mang tính
đồng nhất (homogeneous),vì thế nên các đồ thị ngẫu nhiên không thể mang tính chất giống như các đồ
thị biểu diễn các hệ thống,mạng thực tế.
Các mạng thực tế (real networks) mang tính chất không đồng nhất ,có các đặc tính thể hiện tính thứ tự,tổ


chức của các hệ thống thực.Các bậc của đỉnh được thường phân bố theo luật phân phối mũ: nhờ vậy mà
có rất nhiều đỉnh có bậc thấp cùng với một số ít đỉnh mang bậc cao,và mật độ cạnh phân phối tập trung
trong các nhóm điểm,và tản mát giữa các nhóm với nhau.Vì mạng thực mang những tính chất trên cho
nên nó được gọi là có Cấu trúc cộng đồng (community structure) hay có thể Phân cụm (Clustering).Các
Cộng đồng (communities) hay còn được gọi là các Clusters hoặc các Module ,là một nhóm các đỉnh mà
chúng có những thuộc tính giống nhau và (hoặc) có một vai trò giống nhau đối với graph.
Chúng em xin nói qua về khái niệm Đồ thị ngẫu nhiên,vì trong phần Định nghĩa thế nào là một cụm
cộng đồng,khái niệm này có được tham chiếu tới.
Theo thuật ngữ Xác suất thì Đồ thị ngẫu nhiên là một biến ngẫu nhiên (random variable) được định
nghĩa cùng với một không gian xác suất (probability space) cùng với một hàm phân phối xác suất
(probability distribution).Chúng ta thường gán cho đồ thị ngẫu nhiên một vài tính chất của đồ thị nhằm
xác định không gian xác suất,nói cách khác xác suất nhận ngẫu nhiên được một đồ thị có tính chất như
trên là 1.
Các Đồ thị ngẫu nhiên có thể được mô tả bởi một tiến trình ngẫu nhiên sinh ra chúng,hoặc bởi một phân
phối xác suất.Một đồ thị ngẫu nhiên với tính chất cho trước như n điểm,sẽ được xây dựng bằng cách bắt
đầu với n điểm độc lập,đặt các cạnh giữa chúng một cách ngẫu nhiên.Các kiểu đồ thị ngẫu nhiên khác
nhau sẽ có các hàm phân bố xác suất khác nhau.
Giá trị kỳ vọng trong Đồ thị ngẫu nhiên được gán cho bậc đỉnh,mật độ (density) cạnh trong một tập các
đỉnh … là giá trị của bậc đỉnh và mật độ mà có khả năng xuất hiện với xác suất lớn nhất.Đồ thị ngẫu
nhiên không được xây dựng để có những tính chất đặc biệt (1) nào đó,thế nên nó được sử dụng để tạo
dựng một khái niệm đồ thị Kiểu 0 (null model) là một kiểu Đồ thị ngẫu nhiên,nhưng chứa một số đặc
tính cấu trúc của một Đồ thị cho trước,để kiểm tra xem Đồ thị cho trước có những tính chất đặc biệt (1)
hay không.

Vì giới hạn về kiến thức,chúng em xin chỉ trình bày một cách sơ qua về Đồ thị ngẫu nhiên,vì đây là một
lĩnh vực liên quan đến cả lý thuyết đồ thị và lý thuyết xác suất ,chúng em chưa kịp hiểu về bản chất của
nó.Kiến thức về Đồ thị ngẫu nhiên,và các kiểu Đồ thị ngẫu nhiên có thể tham khảo ở các bài báo
[14],[15],[16].
Cuối cùng,một khái niệm nữa chúng em muốn đề cập đến trong báo cáo đó là “nhánh” (stub),mỗi đỉnh
gồm các bậc,tức là có nhánh (stub) – hay còn gọi là nửa cạnh (half edge) ,để hai đỉnh có thể được
kết nối với nhau qua một cạnh thì mỗi một đỉnh phải chia sẻ một nhánh để bắt tay nhau,lúc đó 1 cạnh
giữa hai đỉnh sẽ được tạo ra.Khái niệm này sẽ liên quan đến việc xây dựng một Kiểu 0 đề xuất bởi
Newman và Girvan.

2. Bài toán phân cụm cộng đồng trên đồ thị
Đồ thị là một cấu trúc được sử dụng rộng rãi để miêu tả các hệ thống trong thực tế, như mạng lưới giao
thông, hay mối quan hệ giữa con người trong các tổ chức xã hội. Lí thuyết đồ thị đã phát triển và chiếm


1 phần quan trọng trong sự phát triển của ngành toán học cũng như của khoa học máy tính. Một trong
những vấn đề thú vị của đồ thị là bài toán phân chia đồ thị thành các cụm cộng đồng dựa trên kết nối
giữa các phần tử của đồ thị. Bài toán này rất có ý nghĩa đối với thực tế: việc xác định được tập các điểm
(nút, đỉnh) có liên kết chặt chẽ trong một đồ thị cũng tương đương với việc tìm được một nhóm người
có mối quan hệ chặt chẽ với nhau trong xã hội, hoặc một cụm máy tính có liên kết chặt chẽ với nhau trên
Internet,từ đó rất có lợi trong việc phân tích dữ liệu nhằm phục vụ cho các mục tiêu tối ưu hóa dịch vụ
trong các hệ thống phục vụ một lượng lớn khách hàng.
Trước tiên để hiểu hơn về bài toán ta cần đưa một số định nghĩa,quan điểm về cụm cộng đồng (nhóm
các đỉnh như nào thì được ta coi là 1 cộng đồng) và Cách chia một mạng thành các cụm cộng đồng được
cho là tốt ?.
2.1 Định nghĩa về Cụm cộng đồng (Community)
Vấn đề đầu tiên trong bài toán phân cụm cộng đồng đó là cần tìm một định nghĩa định lượng về cụm
cộng đồng .Thật ra không có một định nghĩa chung nào về nó được tất cả chấp nhận,định nghĩa về cụm
cộng đồng thường tùy thuộc vào kiểu hệ thống mạng / hoặc theo một nhu cầu người sở hữu hệ thống
mạng đó.Trong 1.1 chúng ta quan niệm một cách cảm quan rằng một cụm cộng đồng cần có nhiều cạnh

bên trong nó hơn là những cạnh kết nối với phần còn lại của đồ thị (biểu diễn hệ thống mạng).Đó là một
quan niệm căn bản nhất cho tất cả các định nghĩa khác về cộng đồng,và có rất nhiều cộng thức định
nghĩa khác có thể phù hợp với quan niệm căn bản trên.Bài toán chúng em chưa quan tâm đến các hệ
thống phức tạp,chúng em sẽ xem xét cụm cộng đồng theo quan niệm căn bản như ở trên.Và dưới đây là
mô hình toán học các quan niệm đó.
Cho một đồ thị con (subgraph) là một phần của đồ thị ,với | | = và | | = đỉnh tương ứng.Ta
định nghĩa bậc trong (internal degree) và bậc ngoài (external degree) của đỉnh
,

,là
số cạnh kết nối với các đỉnh khác bên trong hoặc đối với phần còn lại của đồ thị ở bên ngoài .Nếu
tức là đỉnh chỉ kết nối với các định nằm bên trong ,tức là chính là cụm cộng đồng tốt
nhất dành cho ,nếu như
thì tức là không nối với ,thì lúc này cách tốt nhất cho là nên
chuyển sang một cụm cộng đồng khác phù hợp hơn.Bậc trong
của là tổng các bậc trong của đỉnh
thuộc ,và bậc ngoài
của là tổng các bậc ngoài của đỉnh thuộc .Tổng bậc (total degree)
tổng tất cả các bậc của các định thuộc ,
.
Ta định nghĩa độ đậm đặc (intra-cluster density)
của đồ thị con
trong và tất cả số cạnh có thể có bên trong đồ thị con đó :

Tương tự,ta định nghĩa độ phân tán (inter-cluster density)
với tất cả số cạnh có thể đi ra bên ngoài :

là tỷ số giữa số cạnh bên

là tỷ số giữa số cạnh ra bên ngoài



Để là một cụm cộng đồng ,ta mong muốn
lớn hơn mật độ trung bình cạnh (average link
density) của
- mật độ trung bình cạnh định nghĩa bằng tổng số các cạnh của trên tổng số các
cạnh có thể trong - hay nói cách khác
cần phải cần nhỏ hơn rất nhiều so với
.Tìm kiếm
một sự cân đối (tradeoff) tốt nhất giữa

là mục tiêu chung của hầu hết của các thuật
toán phân cụm đồ thị (clustering algorithm).

Figure 2 Một ví dụ đơn giản về 1 đồ thị có 3 cụm cộng đồng

Một đặc tính quan trọng khác cần có của mỗi cụm cộng đồng đó là tính liên thông (connectness),tức là
giữa hai đỉnh sẽ có ít nhất một đường đi kết nối giữa hai đỉnh đó.
Tất cả các định nghĩa về cụm cộng đồng đều yêu cầu các cụm cộng đồng cần có những yêu cầu như
trên.Có ba lớp định nghĩa về cụm cộng đồng đó là cục bộ (local),tổng thể (global) và dựa trên tương tự
đỉnh (based on vertex similarity).lớp định nghĩa về cục bộ coi các cụm cộng đồng như là một đối tượng
có tính tự trị (autonomy) ,vì vậy nó có thể được ước lượng nó một cách độc lập với đồ thị.Lớp định
nghĩa tổng thể coi như các cụm cộng đồng là một phần của toàn bộ cộng đồng,và không thể bỏ qua ảnh
hưởng của nó đến cộng đồng,vì vậy định nghĩa cộng đồng cũng có nghĩa là xem xét cả tổng thể là một


đồ thị.Lớp định nghĩa dựa trên sự tương tự đỉnh coi cộng đồng là một tập hợp các đỉnh có chung tính
chất.
Chúng em sẽ chỉ xem xét lớp định nghĩa tổng thể ,vì nó có liên quan tới việc xây dựng hàm fitness mà
chúng em sẽ sử dụng.

Như đã bàn ở trên,trong việc định nghĩa một cụm cộng đồng theo lớp tổng thể,người ta coi các cụm cộng
đồng là một phần của toàn bộ đồ thị,không thể coi nó riêng biệt mà không xét đến ảnh hưởng của nó đến
chức năng của cả hệ thống.Giới học thuật đưa ra rất nhiều tiêu chuẩn để đánh giá nhận dạng các cụm
cộng đồng.Tuy nhiên trong hầu hết,các trường hợp đó những định nghĩa gián tiếp (indirect). Mặc dù vậy
vẫn có một lớp các định nghĩa trực tiếp,chính xác,dựa trên một ý tưởng đó là : một đồ thị có cấu trúc
cộng đồng khi nó khác với một Đồ thị ngẫu nhiên.Một đồ thị ngẫu nhiên tiêu biểu và đơn giản nhất
được đề xuất bởi Erdos và Renyi,đó là một đồ thị không được mong đợi là có một cấu trúc cộng đồng
trong đó,vì mọi cặp đỉnh đều có một xác suất kết nối giống nhau,tức là ở nó không hề có một sự ưu tiên
dành kết nối nào để tạo dựng các cụm cộng đồng.
Từ đó ta có thể định nghĩa một kiểu 0 (null model) – tức 1 đồ thị dùng để lấy làm ngưỡng 0 của tính chất
Cấu trúc cộng đồng – tương tự như định nghĩa số 0,lấy làm đánh giá cho độ lớn của số nguyên dương nó một đồ thị có một vài đặc trưng về cấu trúc giống như đồ thị đang xét (original) nhưng khác ở chỗ nó
là một đồ thị ngẫu nhiên .Một đồ thị kiểu 0 thông dụng nhất được đề xuất bởi Newman và Girvan,nó là
một kiểu ngẫu nhiên (randomized version) của đồ thị đang xét,ở đó các cạnh được nối một cách ngẫu
nhiên,nhưng bậc kỳ vọng (expected degree) ở mỗi đỉnh giống như bậc của đỉnh đó ở trong đồ thị đang
xét.[16]
Kiểu 0 là một khái niệm đứng sau định nghĩa về hàm mô-đun (modularity) ,là một hàm để ước lượng độ
tốt của một cách phân cụm cho đồ thị,hàm mô-đun là một rất phù hợp để định nghĩa một cách tổng thể
về cụm cộng đồng.
Tiếp theo chúng ta sẽ tiếp đến câu hỏi thế nào là một cách phân cụm tốt
2.2 Thế nào là một cách phân cụm tốt ?
Cách phân cụm (partiotion) là một cách chia một đồ thị thành nhiều cụm (clusters) ,mỗi một đỉnh lại
thuộc về một cụm.Với các đồ thị biểu diễn mạng,hệ thống trong thực tế,mỗi đỉnh có thể ở trong một hay
nhiều cụm khác nhau.
Một cách phân cụm có thể theo thứ tự phân cấp (hierarchically ordered) ,khi graph có cấu trúc với
những bậc,cấp khác nhau.Trong trường hợp này,các cụm được sắp xếp theo các cấp bậc,mỗi cụm cấp
cao cũng có một cấu trúc cộng đồng riêng,với những cụm cộng đồng nhỏ bên trong,các cụm cộng đồng
nhỏ này có thể cũng có các cụm cộng đồng nhỏ hơn nữa tạo ra cấu trúc cộng đồng cho riêng nó.
Một thuật giải (algorithm) phân cụm tốt được giả thiết rằng phải biết tìm ra những cách phân cụm
tốt.Nhưng thế nào thì được coi là tốt ? Nhằm phân biệt đâu là “tốt” đâu là “xấu”,ta có thể đưa ra một số
đặc tính đơn giản,cảm quan và dễ dàng chấp nhận.



Có rất nhiều thuật giải có khả năng phát hiện ra một tập các cách phân cụm có thể sử dụng,như là các kỹ
thuật dựa trên phân cụm phân tầng (hierarchical clustering),đưa ra một tập rất lớn các cách phân
cụm.Nhưng điều đó không có nghĩa là các cách phân cụm này là tốt như nhau,vì vậy rất cần kíp cần đưa
ra một tiêu chuẩn mang tính định lượng (critertion quantitative) nhằm ước lượng độ tốt của một cách
phân cụm .Hàm chất lượng (quality function) ra đời trong điều kiện đó,nó là một hàm được sử dụng để
gắn một giá trị cho một cách phân cụm của đồ thị .Từ đó ta có thể dựa trên những điểm (score) được
đưa ra bởi hàm chất lượng nhằm xếp hạng các cách phân cụm .Một cách phân cụm có điểm càng cao thì
được cho là càng tốt,vậy là một cách phân cụm có điểm cao nhất sẽ được coi là tốt nhất .Cuối cùng
chúng ta nên nhớ rằng câu hỏi cách phân cụm nào tốt hơn cách phân cụm nào là một vấn đề có nhiều
giải đáp (ill-posed problem),nó tùy thuộc vào hình mẫu (concept) đồ thị và hàm chất lượng được sử
dụng.
Một hàm chất lượng
(elementary function)

được cho là có tính cộng (additive) nếu như tồn tại một hàm nhân tố
,mà với mọi cách phân cụm của đồ thị đều có thể viết như sau:


Với là một cụm của cách phân cụm
không phải là một yêu cầu bắt buộc.

.Hầu hết các hàm chất lượng đều có tính cộng,mặc dù đây

Một ví dụ về hàm chất lượng đó là hàm hiệu suất P (performance P),hàm này tính số lượng các cặp đỉnh
được “thông dịch” (interpreted) chính xác,ví dụ hai đỉnh cùng cụm cộng đồng và có cạnh nối giữa,hoặc
hai đỉnh khác cộng đồng và không có cạnh nối giữa thì được coi là “thông dịch” chính xác.
|{


}|

|{

}|

Một ví dụ khác là hàm bao phủ (coverage) là tỷ số giữa số cạnh kết nối bên trong (intra-community
edges) trên tổng các cạnh của đồ thị .
Hàm chất lượng thường được sử dụng nhất đó là hàm mô-đun của Newman và Girvan (Newman and
Girvan,2004) .Nó dựa trên một ý tưởng đó là một đồ thị ngẫu nhiên thì không được kỳ vọng là có cấu
trúc cộng đồng ,vậy sự xuất hiện các cụm cộng đồng có thể được phát hiện bằng cách so sánh mật độ
cạnh trong đồ thị con của đồ thị đang xét với mật độ cạnh kỳ vọng mà đồ thị con đó có nếu như các đỉnh
được gắn ngẫu nhiên mà không quan tâm đến cấu trúc cộng đồng của đồ thị.Giá trị kỳ vọng này của mật
độ phụ thuộc vào cách chọn kiểu 0 ,nói kỹ hơn là chọn một phiên bản sao chép của đồ thị gốc có giữa
một số đặc tính cấu trúc nhưng không có cấu trúc cộng đồng.Hàm Mô-đun tổng quát cho các kiểu 0
được Newman và Girvan xây dựng dưới dạng sau.



Với
là số lượng cạnh giữa hai đỉnh và trong đồ thị ,và
là giá trị kỳ vọng số lượng cạnh giữa
hai đỉnh trên trong kiểu 0 .Hàm
sẽ là 1 nếu như hai đỉnh trên thuộc cùng một cụm cộng đồng trong
cách phân cụm,ngược lại nó sẽ bằng 0,m là tổng số cạnh của đồ thị.
Việc lựa chọn một đồ thị kiểu 0 thường mang tính cảm quan,và có một vài lựa chọn khác nhau.Ví dụ
một người có thể chỉ đơn giản chọn một đồ thị có tổng số cạnh giống như nguyên mẫu ,và các cạnh đó
được đặt một cách ngẫu nhiên giữa cặp các đỉnh với giá trị xác suất như nhau,lúc này
sẽ không thay
đổi giá trị.Mặc dù đơn giản,nhưng đồ thị kiểu 0 này không phải là một mô tả tốt của các mạng thực

tế,với phân phối bậc đỉnh Poissonian rất khác so với các phân phối bậc đỉnh bất đối xứng (skewed
distribution) thường thấy trong thực tế.
Do cách phân phối của bậc đỉnh trong các mạng và hệ thống thực tế là rất đa dạng,vậy nên chúng ta lựa
chọn kiểu 0 giống như cách phân phối bậc đỉnh giống như của đồ thị đang xét (chi tiết về Đồ thị ngẫu
nhiên của kiểu 0 này tham khảo ở [16]).Kiểu 0 thường được sử dụng cho hàm Mô-đun có dãy bậc kỳ
vọng (expected degree sequence) giống như dãy bậc của đồ thị đang xét.Với kiểu 0 này một đỉnh có thể
được gắn với một đỉnh khác ở trong đồ thị,và xác suất để hai đỉnh i , j,với bậc và được kết nối với
nhau có thể được tính một cách dễ dàng.Để tạo ra một cạnh giữa hai đỉnh i và j ta cần hợp nhất hai
nhánh (stub – hay còn gọi là nửa cạnh) của mỗi đỉnh i và j với nhau.Xác suất là xác suất để để chọn 1
nhánh của đỉnh i trong 2m nhánh là
,với là số nhánh hay bậc của đỉnh i ,vậy xác suất để j và i
có kết nối là
,số kỳ vọng là
.Vậy đối với kiểu 0 này hàm mô-đun là
như sau :


Một vài biến đổi ta được công thức như sau :
∑[

]

3. Giải thuật di truyền Genetic Algorithm
Giải thuật di truyền (Genetic Algorithm) là một trong những giải thuật tìm kiếm tối ưu hóa dựa trên (bắt
chước) quá trình tiến hóa và chọn lọc tự nhiên của giới sinh vật. GA có khả năng tìm được lời giải tốt
ngay cả khi không gian tìm kiếm là phức tạp và không liên tục. GA cũng được coi là 1 bài toán học máy
dựa trên quá trình tối ưu hóa.GA áp dụng phương pháp tìm kiếm ngẫu nhiên (stochastic search) để tìm
được lời giải tối ưu.
Giải thuật di truyền là một trong ba nội dung chính của lĩnh vực Tính toán tiến hóa (Evolution
computation) cùng với hai nội dung khác là Chiến lược tiến hóa (Evolution Strategy) và Lập tình tiến

hóa (Evolution programming).


Giải thuật di truyền (gọi tắt là GAs) được phát minh bởi John Holland vào năm 1960 ,và được phát triển
bởi ông và các đồng nghiệp vào các năm 1960 và 1970 tại đại học Michigan.GAs ban đầu được phát
triển không nhằm để giải quyết một bài toán nào cả,mà là để nhằm nghiên cứu một cách hệ thống về
Hiện tượng thích nghi (the phenomenon of adaption) trong thiên nhiên,để tìm ra một cách thức nhằm áp
dụng Cỗ máy thích nghi của tự nhiên (the mechanism of natural adaption) vào trong các hệ thống máy
tính.Trong cuốn sách Thích nghi trong tự nhiên và Hệ thống nhân tạo của mình ,Holland đã trình bày về
GA giống như một ý tưởng trừu tượng của tiến hóa sinh học,và đưa ra một mô hình lý thuyết cho khái
niệm Thích nghi (adaption) đối với GA.Giải thuật di truyền của Holland là một phương pháp (method)
nhằm tiến hóa một quần thể chứa các Nhiễm sắc thể (chromosome) thông qua quá trình “chọn lọc tự
nhiện” bằng các thao tác lấy cảm hứng từ lĩnh vực di truyền học như Lai ghép (crossover),Đột biến
(mutation) ,Phản đảo (inversion).Mỗi nhiễm sắc thể chứa các Gen (gene) ,mỗi Gen có thể được gán cho
một kiểu Gen hay còn gọi là a-le (allele) ,các nhiễm sắc thể có khả năng thích nghi cao có thể được Tái
sinh (reproduce),những nhiễm sắc thể có khả năng thích nghi ở tầm trung bình sẽ có khả năng được lai
ghép tạo ra các nhiễm sắc thể mới cao hơn các Gen có khả năng thích nghi thấp hơn.Giao phối thực hiện
việc tráo đổi các giá trị Gen giữa bố và mẹ,Đột biến thay đổi giá trị a-le của một Gen bất kỳ,các thao tác
bắt chước giống hệt như trong tự nhiên.
Holland đã tạo ra một hệ thống lý thuyết vững chắc để GAs có thể phát triển,và làm nền móng cho các
nghiên cứu lý thuyết về sau của GAs.Vào ngày hôm nay các nhà nghiên cứu thường sử dụng thuật ngữ
“Giải thuật di truyền” để gọi những gì cải tiến dựa trên hình mẫu ý tưởng của Holland.

3.1. Mô tả giải thuật GA:
3.1.1. Các khái niệm lý thuyết cốt lõi
-Trong giải thuật di truyền,mỗi lời giải của bài toán được biểu diễn dưới dạng một chuỗi bit gọi là nhiễm
sắc thể (chromosome),cách biểu diễn này sẽ do người sử dụng GAs thiết kế nhằm phù hợp với bài toán.
- Ý tưởng tìm kiếm một lời giải thoải mãn trong một tập hợp các Lời giải đề cử (candidate solutions) là
rất phổ thông trong lĩnh vực Khoa Học Máy Tính,và nó được gọi một cái tên riêng là : tìm kiếm trong
“không gian tìm kiếm” (search space) .Thuật ngữ “không gian tìm kiếm” liên quan đến một tập hợp

những lời giải đề cử và những quan niệm về “khoảng cách” giữa các lời giải đó.
Một thuật toán dành cho việc tìm kiếm trong một không gian như vậy là một phương thức (method) để
chọn lựa lời giải đề cử nào sẽ được kiểm tra trong mỗi một giai đoạn cụ thể cả công việc tìm
kiếm.Trong hầu hết các trường hợp lời giải được kiểm tra tiếp theo sẽ phụ thuộc nhiều vào kết quả của
những chuỗi kiểm tra trước đó;hầu hết các thuật toán tốt đều giả sử rằng có một liên hệ ràng buộc về
chất lượng giữa các lời giải có các giai đoạn kiểm tra kế tiếp nhau.Thuật giải di truyền giả sử rằng các
lời giải tiến cử “cha” có chất lượng tốt và thuộc vào các miền khác nhau của không gian có thể kết hợp
thông qua lai ghép để có thể - chẳng may - tạo ra một lời giải tiến cử “con” có chất lượng cao tương tự
hoặc tốt hơn.


- Một khái niệm quan trọng khác đó là “Không gian thích nghi” (fitness landscape) được nhà sinh vật
học Sewell Wright (1931) đưa ra trong cảnh giới của lĩnh vực Di truyền dân cư (Population Genetics)
khái niệm này biểu diễn một không gian gồm tất cả các kiểu hình (genotype) kèm với Giá trị thích nghi
(fitness value) của nó.
Trong miền không gian đó cũng có những khái niệm như vùng “lồi”,vũng “lõm” và các “đỉnh”.Trong
giải thuật di truyền,các thao tác như giao phối,đột biến nhằm đưa quần thể di chuyển trên một không
gian thích nghi được xác định bởi hàm đánh giá .
3.1.2 Các yếu tố của Giải thuật di truyền.
Có rất nhiều các cách định nghĩa khác nhau về Thuật giải di truyền ,tuy nhiên không có cách định nghĩa
tốt nào hoàn toàn được chấp nhận bởi tất cả.Tuy nhiên mọi định nghĩa đều có những yếu tố căn bản đó
là Cộng đồng các nhiễm sắc thể,chọn lọc dựa trên hàm đánh giá;giao phối, đột biến nhằm tạo ra cá thể
mới.Đảo đoạn – một trọng những yếu tố của Giải thuật di truyền được đưa ra bởi Holland – rất ít khi
được sử dụng.
a.Các toán tử di truyền
Một dạng đơn giản nhất của giải thuật di truyền đó là gồm 3 toán tử đó là : chọn lọc,giao phối,và đột
biến.Như đã nói ở trên các toán tử này giúp cho quần thể có thể đi lên cao hơn trong miền thích nghi.
Chọn lọc : Chọn lựa một vài nhiễm sắc thể của quần thể để tái sản xuất.Nhiễm sắc thể nào càng có độ
thích nghi cao thì khả năng được tái sản xuất càng cao.
Lai ghép: tạo ra một cặp nhiễm sắc thể mới từ cặp nhiễm sắc thể,cặp giả thiết mới này không cần chắc

chắn phải tốt hơn bố mẹ,tuy nhiên cần có khả năng cao để có thể kế thừa một đặc tính tốt từ tốt từ bố và
mẹ để trở nên tốt hơn bố và mẹ. Điểm lai ghép có thể được chọn trước hoặc hoàn toàn ngẫu nhiên trên
nhiễm sắc thể của bố mẹ. Mỗi con được tạo ra sẽ mang một nửa nhiễm sắc thể của bố và một nửa kia
của mẹ.
Đột biến: từ một nhiễm sắc thể đầu vào tạo ra một nhiễm sắc thể mới mà có một hoặc một vài vị trí được
thay đổi.
Trong 3 toán tử di truyền thì lai ghép và đột biến đem lại sự đa dạng cho cộng đồng.
b.Hàm fitness
Hàm fitness là hàm đánh giá một lời giải (solution) dựa trên các tiêu chí mà bài toán yêu cầu, tùy từng
bài toán cụ thể mà hàm fitness sẽ khác nhau. Hàm fitness là động lực chính để thúc đẩy cộng đồng phát
triển theo hướng tốt lên. Việc xây dựng được hàm fitness mạnh(thể hiện đúng yêu cầu bài toán) sẽ đẩy
nhanh quá trình tìm được lời giải tối ưu của thuật toán, một hàm fitness yếu sẽ làm chậm quá trình này,
hoặc có thể ta sẽ không tìm được lời giải đủ tốt thỏa mãn bài toán.
c.Quá trình làm việc (dạng đơn giản) của Giải thuật di truyền


- Trước hết, ta khởi tạo quần thể ban đầu gồm một số các khả năng có thể của lời giải. Sau đó đánh giá
các giả thiết ban đầu này theo tiêu chí của bài toán nhờ sử dụng một hàm đánh giá (fitness) rồi sắp xếp
toàn bộ cộng đồng ban đầu dựa vào điểm của hàm đánh giá này.Hàm đánh giá xác định 1 giá trị cho
mỗi cá thể trong quần thể,giá trị hàm đánh giá cho một cá thể càng cao,chứng tỏ cá thể ấy càng có độ
thích nghi cao,tức là càng phù hợp để làm lời giải cho bài toán. Hàm đánh giá cũng sẽ khác nhau tùy
thuộc vào bài toán và thuật toán sử dụng,và nó thường được xác định dựa trên yêu cầu của bài toán với
lời giải đáp và kinh nghiệm giải quyết bài toán người xây dựng.
- Sản sinh ra thế hệ tiếp theo: từ quần thể ban đầu, chọn ra ngẫu nhiên các cá thể (biểu diễn, lời giải) để
tham gia vào quá trình tạo ra thế hệ tiếp theo cho cộng đồng. Các toán tử di truyền được sử dụng trong
quá trình này bao gồm lai ghép, đột biến, và chọn lọc.
- Toàn bộ các cá thể được tạo ra sau quá trình sẽ được đánh giá bởi hàm đánh giá,sau đó tùy thuộc vào
giá trị đánh giá cuả nó mà quyết định xem nó có được thêm vào cộng đồng hay không: nếu nó tốt hơn
bất kì cá thể nào trong cộng đồng, thì nó sẽ được thêm vào, và một cá thể trong cộng đồng sẽ bị thải loại
ra. Quá trình này đảm bảo cho cộng đồng luôn chứa các cá thể tốt nhất.

- Quá trình trên sẽ lặp lại,việc dừng lại của quá trình có thể xảy ra theo các kịch bản sau:
+ Nhiễm sắc thể đã đủ tốt,hoặc lời giải đã thỏa mãn một vài điều kiện cần có.
+ Số lượng của quần thể đã đến mức tối đa (mới quần thể không có sự loại bỏ các nhiễm sắc thể tồi).
+ Hàm đánh giá đã đạt giá trị cực đại (tức trong quần thể đã có những “đỉnh” của miền đánh giá).
+ Dừng lại bởi người thiết kế,do anh ta đã tìm ra xu hướng phát triển quần thể,nhằm cải thiện thuật
toán nhằm quần thể di chuyển lên cao trong miền đánh giá với một tốc độ nhanh hơn.

4. Ứng dụng GA vào phân cụm cộng đồng trên đồ thị
Ứng dụng giải thuật GA vào phân cụm cộng đồng trên các đồ thị là một hướng giải quyết thú vị. Trên
thế giới cũng đã có nhiều công trình nghiên cứu xuất sắc về lĩnh vực này. Các bài báo về phân cụm cộng
đồng trên đồ thị có thể kể đến như [5] [12] [13], và ứng dụng GA vào giải quyết bài toán phân cụm cộng
đồng có thể tìm thấy ở [1] [7].
GA đã chứng tỏ được khả năng và sự phù hợp trong vấn đề phân cụm cộng đồng trên các đồ thị:
- Không gian các lời giải thường rất lớn và phức tạp
- Việc áp dụng các giải thuật tìm kiếm thông thường trên đồ thị không chứng minh được tính hiệu quả
trong giải quyết bài toán. Thuật toán tốt nhất theo cách này có thời gian chạy cỡ O(n^3) [].


CHƯƠNG II . THIẾT KẾT CHI TIẾT THUẬT TOÁN VÀ CÀI ĐẶT THUẬT
TOÁN

1.Xây dựng ý tưởng và thiết kế
1.1 Biểu diễn bài toán
Mỗi lời giải (một cách phân cụm cộng đồng) của bài toán phân cụm cộng đồng trên đồ thị có thể được
biểu diễn bởi một cách chia toàn bộ đồ thị thành các phân vùng (cluster). Mỗi nút trên đồ thị sẽ được
gán vào từng phân vùng phù hợp.
Để biểu diễn lời giải của bài toán, một nhiễm sắc thể được sử dụng: mỗi phần tử của nhiễm sắc thể sẽ
biểu thị cho một đỉnh, chứa thông tin về phân vùng mà nút đó thuộc về.
Để thiết kế một cách biểu diễn nhiễm sắc thể dành cho một cách phân cụm,thì chúng em sẽ xác định
những yêu cầu nào của một cách phân cụm tốt có thể được mã hóa sẵn trong lời giải,với cách mã hóa

như vậy không gian tìm kiếm sẽ được giảm tải,tránh phải quan tâm đến những lời giải chắc chắn không
chấp nhận được.Trong các cách mã hóa mà bọn em đã tìm ra,duy nhất một cách mã hóa có khả năng
này,các cách phân cụm được mã hóa bởi cách mã hóa này sẽ có những cụm cộng đồng thỏa mãn được
tính liên thông (connectness) – một tính chất căn bản của mọi tập đỉnh để được coi là một cụm cộng
đồng.
Trong cách mã hóa này,mỗi nhiễm sắc thể gồm có N gen
mỗi gen có thể được gán cho một
} .Các gen và a-len trong cách biểu diễn này tượng trưng cho các đỉnh
giá trị a-len trong dãy {
trong đồ thị .Nếu gen j được gán giá trị i tức là giữa đỉnh i và đỉnh j phải có một liên kết giữa chúng,và
nó sẽ ở cùng một cụm cộng đồng trong cách phân cụm mà nhiễm sắc thể mô tả.Trong thao tác giải mã
một cụm cộng đồng sẽ bắt đầu sẽ có 1 đỉnh nó sẽ gia nhập các đỉnh thành viên,nếu như các đỉnh đó ở
chung một cụm cộng đồng với một đỉnh nào đó đã có trong cụm cộng đồng ,thao tác giải mã này đảm
bảo cụm cộng đồng giữa nguyên tính liên thông qua quá trình phát triển,vì nếu cụm cộng đồng cũ có
tính liên thông thì sau khi gia nhập một đỉnh mới nó vẫn là liên thông vì đỉnh đó chắc chắn có một kết
nối với một đỉnh đã là thành viên của cụm cộng đồng từ trước.


Figure 3 Mô tả cách biểu diễn lời giải
1.2. Hàm đánh giá dùng để tính giá trị thích nghi của các cá thể
Như đã đề cập phần Cơ sở Lý thuyết,hàm mô-đun của NewMan và Girvan là một hàm dùng để đánh giá
chất lượng của một Cách phân cụm,vì vậy nó rất thích hợp để lấy làm hàm đánh giá để sử dụng cho hệ
thống.
1.3. Các thao tác chính nhằm tạo sinh ra các thế hệ mới cho quần thể
Chiến lược tạo dựng một thế hệ mới cho một quần thể của chúng em sẽ là như sau:
Có một tập cộng đồng mới G chứa tất cả các cá thể được sinh ra trong mỗi lần tạo dựng.Ghép tất cả các
cá thể trong quần thể thành các cặp riêng biệt,chúng em sẽ thực hiện thao tác lai ghép,đột biến trên các
cặp cá thể này.Mỗi cặp cá thể sẽ sinh ra hai cá thể con mới,hai cá thể con này sẽ được bổ sung vào
G.Sau khi tất cả các cặp đã được thao tác,ta sẽ bổ sung tập G vào tập quần thể cũ,và sắp xếp lại thứ tự
các cá thể theo giá trị đánh giá của mỗi cá thể .

Mỗi cá thể sẽ được gắn một giá trị gọi là xác suất lai ghép tỷ lệ thuận với ranking của nó trong quần
thể,tức là một cá thể càng tốt sẽ có khả năng được phối giống càng cao.
Toán tử lai ghép.
Toán tử lai ghép cần sinh ra cá thể mới,phải thỏa mãn hai điều kiện,thứ nhất có tính thừa kế tính chất
của cá thể cha và cá thể mẹ mẹ,thứ hai phải tạo sự đa dạng.
Chiến lược lai ghép của chúng em như sau.Kết quả lai ghép sẽ sinh ra hai cá thể mới (offspring) ,mỗi cá
thể sẽ kế thừa toàn bộ một cụm cộng đồng của cha(hoặc mẹ),bằng cách sao chép toàn bộ các giá trị a-len
liên quan đến cụm cộng đồng của cha (hoặc mẹ),tất cả các gen còn lại sẽ sao chép toàn bộ giá trị của các
gen tương ứng của mẹ (hoặc cha),các gen còn lại này có nhiệm vụ tao nên sự khác biệt của cá thể mới so
với cha (hoặc mẹ) của chúng.
Về vấn đề chọn lựa các cá thể để lai ghép,xác suất hai cá thể này được phép lai ghép sẽ là trung bình
cộng của xác suất lai ghép của từng cá thể.


Nhờ vậy nhờ vậy khả năng hai cá thể có những cụm cộng đồng tốt sẽ có khả năng được lai ghép cao hơn
và các cá thể con sẽ nhận được cơ hội kế thừa các cụm cộng đồng tốt từ cha và mẹ của chúng,dù vẫn giữ
nguyên khả năng tạo ra sự biến đổi ,góp phần làm quần thể đa dạng hơn.
Toán tử đột biến
Toán tử đột biến nhằm tạo sự đa dạng cho quần thể,đưa quần thể ra khỏi vùng lồi (hoặc vùng lõm) trong
miền thích nghi - tức là tránh giá trị thích nghi của các cá thể quần thể bị kẹt vào một cực đại (hoặc cực
tiểu) cục bộ,làm quần thể không thể phát triển hơn được về độ thích nghi.
Vì mục đích trên của toán tử đột biến,cần tạo ra một cách đột biến ngẫu nhiên nhất,nhằm tạo ra sự đa
dạng kết quả của cá thể mới sinh ra.Chúng em sẽ chọn một số ngẫu nhiên các Gen và thay đổi ngẫu giá
trị A-len của nó,trong nội dung của Bài toán,thì A-len này sẽ phải tượng trưng cho một đỉnh mà có liên
kết giữa đỉnh được tượng trưng bởi Gen đã được chọn.

Figure 4 Một tả phương án Giao phối
Toán tử chọn lọc
Hệ thống của chúng em sẽ không sử dụng toán tử chọn lọc,mọi Nhiễm sắc thể sẽ được giữ lại,và các
nhiễm sắc thể này chỉ bị đào thải nếu như ranking của nó trong Quần thể bị đẩy xuống một ngưỡng nào

đó.

2. Chi tiết chương trình hệ thống
Hệ thống sẽ được cài đặt GAs bằng ngôn ngữ Java,theo mô thức hướng đối tượng.Chúng em hoàn toàn
tự cài đặt và không tham khảo bất cứ nguồn mã nào.


Đầu vào sẽ là một file miêu tả đồ thị gồm số đỉnh,dòng đầu của file sẽ là số đỉnh,các dòng sau sẽ có
dạng “a b” thể hiện cạnh giữa hai đỉnh a và đỉnh b của đồ thị.

Figure 5 File mô tả đồ thị của mạng cá heo
Đầu ra sẽ là một dãy danh sách các Nhiễm sắc thể tốt nhất,cùng với cách phân cụm đồ thị mà nó thể
hiện.kèm theo giá trị thích nghi của nó.

Figure 6 Một kết quả được đưa ra
Gồm có 3 lớp chính .
Lớp Node – là mô tả cho các đối tượng đỉnh trong đồ thị ,mỗi Node sẽ được gắn cho một số ID để đại
diện cho Node,nó cũng chứa các thông tin về các Node có liên kết với Node đó lưa trữ trong ma,và các
thao tác căn bản như thêm Node liên kết.
Lớp Chromosome – là mô tả (blueprint) cho các đối tượng Nhiễm sắc thể,thuộc tính quan trọng nhất của
lớp này đó là một dãy số nguyên,với các chỉ số của mảng thể hiện các Gen ,và giá trị của mỗi phần tử
trong mảng thể hiện giá trị của Gen tức là A-len.Trong lớp Chromosome này chứa hàm
evaluateFitvalue() để tính giá trị thích nghi của Nhiễm sắc thể này,hàm Mutate biểu diễn toán tử đột
biến,các hàm khác để thao tác các thay đổi trên Nhiễm sắc thể đó.
Trong lớp này cũng chứa một cấu trúc mảng lồng để biểu diễn Cách phân cụm mà Nhiễm sắc thể mà đối
tượng thể hiện.
Lớp GADetectCommunity – lớp Chromosome là lớp bên trong của lớp này,và kết tập mạnh với lớp
này,mỗi lớp GADetectCommunity sẽ chứa một list các đối tượng Chromosome,có giới hạn số lượng
phần tử bởi giá trị nChromosome,list này chính là thể hiện của khái niệm Quần thể.Lớp
GADetectCommunity cũng chứa một list các đối tượng Node,chứa thông tin về các đỉnh của đồ thị.



Gồm có các phương thức chính sau .
Phương thức mutate(int max) chứa trong lớp Chromosome trả về một đối tượng Chromosome chính là
kết quả đột biến ,và có tham số đầu vào số một số nguyên max biểu thị số lượng tối đa các Gen sẽ bị
thay đổi giá trị A-len.
Phương thức crossOver() là phương thức để cài đặt toán tử giao phối chứa trong lớp
GADetectCommunity ,trả về một list chứa hai đối tượng Chromosome là kết quả của của thao tác giao
phối,chứa tham số đầu vào là hai Chromosome được lựa chọn để giao phối.
Phương thức init() chứa trong lớp GADetectCommunity ,phương thức này khởi tạo cho quần thể các cá
thể đầu tiên.
Phương thức evaluteFitValue() nằm trong lớp Chromosome,thao tác giải mã ra Cách phân cụm sẽ chứa
trong phương thức này,sau khi giải mã ra cách phân cụm,việc tính giá trị thích nghi sẽ được bắt
đầu,bằng cách duyệt từng đỉnh trong mỗi Cụm cộng đồng ,và sau đó sử dụng hàm Mô-đun để tính giá trị
thích nghi.
Phương thức eVOLUTION() chứa trong lớp GADetectCommunity, phương thức này thể hiện quá trình
sinh ra một quần thể mới từ quần thể đã có,giống như chiến lược tạo dựng một thế hệ mới của chúng em
đã nêu lên ở trên,tức là sẽ chia quần thể cũ thành các cặp Nhiễm sắc thể , các cặp nhiễm sắc thể sẽ được
chọn lựa lai ghép hoặc đột biến phụ thuộc vào xếp hạng của hai Nhiễm sắc thể của cặp Nhiễm sắc thể
trong quần thể cũ.Các Nhiễm sắc thể mới sẽ được đưa vào trong list returnOffSpring<Chromosome>,và
sau đó từng Nhiễm sắc thể mới này sẽ được bổ sung vào listChromosome<Chromosome>,sau đó ta sẽ
sắp xếp lại listChromosome theo giá trị thích nghi của các Nhiễm sắc thể chứa trong đó,các Nhiễm sắc
thể có độ thích nghi kém sẽ bị loại bỏ khỏi listChromosome.Quần thể mới được tạo ra chứa trong
listChromosome.Quá trình tiếp tục cho đến khi Quần thể cuối cùng chứa cá thể có giá trị thích nghi lớn
nhất.

2.3 demo chương trình
Chương trình của chúng em sẽ chạy trên giao diện dòng lệnh.
Cách chạy chương trình bằng dòng lệnh
java –jar [n1] [n2] [C] [D] [E]

n1 : số lần lặp
n2 : số cá thể trong 1 quần thể
C : đường dẫn file mô tả đồ thị
D : là direct nếu như file đồ thị dùng để mô tả đồ thị có hướng (một cạnh được mô tả hai lần),là
undirected nếu như file đồ thị dùng để mô tả đồ thị vô hướng (một cạnh chỉ mô tả 1 lần)


E : đường dẫn của lời giải nhằm so sánh lời giải nhằm so sánh lời giải của hệ thống đưa ra,nếu có ghi
chú về đường dẫn này thì,chương trình sẽ đưa ra lời giải thực,giá trị thích nghi của nó đánh giá theo hàm
đánh giá của hệ thống và hệ số Rand để xem mức độ giống nhau giữa lời giải do hệ thống đưa ra và lời
giải thực.

Figure 7 Demo chương trình trên nền console


CHƯƠNG III. KẾT LUẬN
1. Đánh giá kết quả
Kiểm thử (Testing) một thuật toán tức là áp dụng nó vào một bài toán mà đã có lời giải và so sánh với lời
giải mà thuật toán đó sinh ra được.Trong trường hợp bài toán phân cụm cộng đồng,thì bài toán với một
lời giải được xác định là tốt nếu đó nó tương ứng với 1 đồ thị có một cấu trúc cộng đồng rõ ràng (clear
community structure).Một đồ thị không có cấu trúc cộng đồng đó là một đồ thị mà có cách phân chia với
mật độ liên kết bên trong ít hơn bên ngoài,một đồ thị như vậy không
Có hai cách để chọn đồ thị tiêu chuẩn (benchmark graph) dùng cho kiểm thử (testing) đó là sử dụng đồ
thị được tự động sản sinh bằng các thuật toán sản sinh đồ thị,ở đó các cấu trúc cộng đồng (built-in
structure) được tác giả thiết kế một cách cảm quan,hoặc sử dụng các cộng đồng dựa trên quan sát từ các
cộng đồng trong xã hội trong thực tế.
1.1. Sử dụng đồ thị nhân tạo (computer-generated benchmarks).
Các đồ thị tiêu chuẩn nhân tạo gồm các loại thông dụng như planted l-partition model (eg. Newman and
German Benchmark),Gaussian random partition generator (eg. LFR Benchmark Graph) và Relaxed
Caveman Graphs.Trong phần phụ lục chúng em sẽ xin trình bày rõ thêm về các đồ thị tiêu chuẩn nhân

tạo này,nhằm hiểu rõ hơn về các cách kiểm thử thông dụng hiện nay đối với bài toán phân cụm cộng
đồng.
Tuy nhiên các benchmark graph hiện nay cần được cải thiện hơn nữa để mô phỏng chính xác hơn các
tính chất phân cụm,sự đa dạng (heterogencity) của cộng đồng trong thực tế cuộc sống.
1.2. Sử dụng các đồ thị tiêu chuẩn thể hiện các cộng đồng thực tế trong xã hội. (Real Network)
Việc kiểm nghiệm thuật toán bằng các graph thể hiện các cộng đồng thực tế tập trung kiểm nghiệm trên
một số ít các mẫu graph,trong các graph đó các vertices được thông tin một cách chi tiết.
Có ba công đồng hay được sử dụng đó là,mạng xã hội của câu lạc bộ Karate Zachary (the social network
of Zachary`s karate club),mạng xã hội của các chú cá heo Doubtful Sound ở New Zeland (the social
network of bottlenoise Dolphin in Doubtful Sound ) và mạng của các đội bóng đại học toàn nước Mỹ do
NewMan và Girman đề đạt (network of America College Football Teams).

1.3. So sánh hai cách phân chia đồ thị (Partition).


Việc xem xét hiệu quả của một hệ thống phân cụm cộng đồng bao gồm cả việc định nghĩa xem thế nào
là giống giữa cách phân cụm (partition) của hệ thống với cách phân cụm cần được phát hiện dựa vào
thực tế.Sau đây chúng em sẽ liệt kê một vài cách thức để đo đạc sự giống nhau (similarity) giữa hai cách
phân cụm cộng đồng,ta sẽ gọi các cách thức đó là các độ đo (measures).
Xét hai cách phân cụm trong đồ thị là

=(

,

,…,

) và

cụm (cluster) trong các cách phân cụm tương ứng và với

cụm

, :

=|

= ( , ,…,

),với



là số lượng

là số lượng đỉnh (vertices) chung bởi hai

|.

Các độ đo được sử dụng hiện nay có thể được chia làm ba loại chính : độ đo dựa trên phép tính toán cặp
(pair counting),độ đo dựa trên độ trùng cụm (cluster matching),và độ đo dựa trên lý thuyết thông tin
(information theory).Để tiện lợi chúng em sẽ gọi chúng theo nguyên nghĩa thuật ngữ tiếng anh.Trong
phần Phụ lục sẽ có giới thiệu sơ qua về ba loại độ đo này.
Trong việc kiểm thử của mình,chúng em sẽ sử dụng các độ đo dựa trên pair counting.Độ đo dựa trên
pair counting có 3 độ đo thông dụng nhất đó là.
Độ đo Wallace (Wallace index) được Wallace để xuất năm 1983 :




Với và

thể hiện xác suất hai đỉnh trong cùng một cụm cộng đồng của X cũng ở trong cùng một
cụm cộng đồng của Y .
Độ đo Rand (Rand index) được Rand đề xuất năm 1971 là bằng tỷ lệ của số cặp đỉnh được phân phối
giống nhau ở cả hai cách phân cụm trên tổng số các cặp đỉnh:

Độ đo Jaccard (Jaccard index):

Độ đo Rand sẽ được lựa chọn để sử dụng trong phần Kiểm Thử của chúng em.

1.4. Kết quả kiểm thử.
1.4.1. Đối với các cộng đồng thực tế.
Khi kiểm nghiệm với câu lạc bộ Karate Zachary thì chúng em thu được kết quả gồm có 4 cụm cộng
đồng như sau :


Figure 8 : Kết quả kiểm thử trên đồ thị mẫu Karate Zachary

Figure 9:Minh họa bằng hình vẽ kết quả của hệ thống đối với đồ thị tiêu chuẩn Karate Zachary
So sánh với kết quả thực tế,thì hệ thống đưa ra số cụm cộng đồng nhiều hơn số cụm cộng đồng đưa ra
thực tế 2 cộng đồng,có vẻ như thuật toán phát hiện cộng đồng nhầm lẫn,nhưng không hệ thống đã phát
hiện được chi tiết hơn so với thực tế,vì mỗi cặp trong 2 cặp cộng đồng do hệ thống đưa ra là một cộng
đồng trong phân cụm thực tế.
Như hình vẽ cách phân cụm thực tế chia thành hai cụm cộng đồng được mô tả bằng hai hình vuông và
tròn,còn cách phân cụm được đưa ra bởi hệ thống chia ra làm 4,biểu thị bằng 4 màu xanh,vàng,xanh
lam,trắng.
Khi kiểm nghiệm với cộng đồng những chú cá heo chúng em được kết quả gồm 4 cụm cộng đồng như
sau :


Figure 10: Kết quả kiểm thử hệ thống dựa trên đồt thị tiêu chuẩn các chú cá Heo


Figure 11 : Minh họa kết quả kiểm thử dựa trên mạng lưới các chú cá Heo
Kết quả cho ra cũng có 4 cộng đồng,so sánh với cách phân cụm thực tế,cho thấy các cụm 1,cụm 3 và
cụm 4 là các cụm con của cụm 2 của cách phân cụm thực tế,còn cụm 2 chính là cụm 1 của cách phân
cụm thực tế.Điều đó cho thấy hệ thống cũng tìm được chi tiết hơn so với cách phân cụm thực tế.
1.4.2. Đối với các đồ thị tiêu chuẩn sinh ra bởi máy tính
Chúng em sẽ sử dụng 9 đồ thị tiêu chuẩn LFR (Gaussian random partition generator) có các tham số
như sau :
Số mũ của phân phối mũ độ lớn bậc đỉnh : 2
Số mũ của phân phối mũ độ lớn của một cụm cộng đồng : 1
Tham số trộn : lần lượt từ 0.1 đến 0.45 với khoảng nhảy là 0.05


Kết quả liệt kê ở bảng sau :
mixing parameter

Số lần lặp
0.1
30
0.15
30
0.2
30
0.25
30
0.3
30
0,35
30
0.4

30
0.45
30
0.5
30

Độ lớn quần thể
50
50
50
50
50
50
50
50
50

Độ đo Rand
1
1
0.992249016
0.890098
0.78973917
0.788877
0.772268701
0.742987205
0.733759843

Nhìn vào kết quả khi sử dụng đồ thị tiêu chuẩn LFR để kiểm nghiệm hệ thống,ta thấy rằng khi Tham số
trộn càng lớn thì việc nhận ra cụm cộng đồng càng khó,giá trị càng lên cao thì với cách Biểu diễn

gen,biện pháp Giao phối,Đột biến hệ thống của chúng ta trở nên chậm chạp,độ tiến triển của quần thể
trở nên chậm lại.Tuy nhiên nếu chạy đủ số lần lặp cần thiết hệ thống vẫn có khả năng đưa ra lời giải
chính xác.

2. Hướng phát triển
Đối với các đồ thị thể hiện các hệ thống mạng thực tế,có sự cấu trúc cộng đồng rõ ràng,ít kết nối giữa
các cụm cộng đồng thì hệ thống đưa ra kết quả chính xác rất nhanh.Nhưng nếu ngược lại,nếu với đồ thị
có hiện tượng chồng chéo cộng đồng,hay có cấu trúc cộng đồng thiếu rõ ràng,thì hệ thống trở nên chậm
lại,vì vậy các cải tiến đầu tiên phải tập trung vào cải thiện tốc độ của hệ thống khi làm việc với các đồ
thị có những tính chất phức tạp.Ngoài ra hệ thống nên có khả năng phát hiện ra các cấu trúc phấn cấp
của một cộng đồng,phát hiện ra các cộng đồng chồng chéo.
Thế nên hướng phát triển có thể như sau :
+ Thay đổi các biểu diễn của các nhiễm sắc thể nhằm giới hạn thêm không gian tìm kiếm,cải tiến các
phương án Giao phối,Đột biến sao cho các thao tác này giúp quần thể phát triển về độ thích nghi càng
nhanh càng tốt.
+ Phát triển để hệ thống có khả năng nhận ra cấu trúc phân cấp của cộng đồng,và phát hiện ra các cộng
đồng có thể chồng chéo.
+ Thiết kế để hệ thống có thể áp dụng tính toán song song nhằm tận dụng tối đa khả năng của phần cứng
để hệ thống có thể đưa ra kết quả tối ưu nhanh hơn.


×