ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
CHƯƠNG 1. Đỗ Thế Chuẩn
XÂY DỰNG HỆ THỐNG MÔ PHỎNG VÀ THỰC TẠI ẢO
SỬ DỤNG NGÔN NGỮ WAVE
XÂY DỰNG HỆ THỐNG THỰC TẠI ẢO
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
1
MỤC LỤC
CHƯƠNG 1.
GIỚI THIỆU........................................................................................... 10
1.1. Giới thiệu về mô phỏng ........................................................................................10
1.2. Công nghệ WAVE ................................................................................................11
CHƯƠNG 2.
NGÔN NGỮ WAVE.............................................................................. 14
2.1. Giới thiệu về ngôn ngữ Wave ...............................................................................14
2.2. Node, Link và Không gian phân tán : Knowledge Network (KN) .......................14
2.3. Tổ chức chung của ngôn ngữ Wave......................................................................16
2.4. Cấu trúc dữ liệu cơ bản của Wave ........................................................................17
2.5. Biến Spatial và kiểu ..............................................................................................18
2.5.1. Task variables.................................................................................................18
2.5.2. Environment variables ...................................................................................18
2.6. Các hành động – ACTS ........................................................................................19
2.6.1. Control acts ....................................................................................................19
2.6.2. Fusion acts: Các phép toán hợp nhất..............................................................22
2.7. Rules – Các luật trong Wave ................................................................................23
2.8. Wave và mô hình lập trình truyền thống ..............................................................26
2.8.1. Sơ đồ luồng (SD)............................................................................................26
2.8.2. Wave và mô hình lập trình song song............................................................28
2.8.3. Wave và mô hình lập trình tuần tự.................................................................30
CHƯƠNG 3.
CÁC BÀI TOÁN MÔ PHỎNG CƠ BẢN VÀ ĐỒ HỌA 2D ................ 38
3.1. Cách tạo thực địa...................................................................................................38
3.1.1. Thuật toán tạo lưới đơn hướng.......................................................................39
3.1.2. Thuật toán tạo lưới trên máy khác .................................................................40
3.1.3. Thuật toán tạo lưới đa hướng .........................................................................41
3.2. Các phép di chuyển cơ bản ...................................................................................43
2
3.2.1. Di chuyển tự do ..............................................................................................43
3.2.2. Di chuyển tránh chướng ngại vật ...................................................................44
3.2.3. Di chuyển vòng quanh chướng ngại vật.........................................................46
3.2.4. Nhìn trong không gian với độ sâu cho trước..................................................48
3.3. Các mô phỏng tương tác cơ bản ...........................................................................50
3.3.1. Đuổi bắt trong không gian..............................................................................50
3.3.2. Di chuyển cùng nhau kiểu tịnh tiến ...............................................................53
3.4. Hiển thị trong Java2D ...........................................................................................56
3.4.1. Giới thiệu về Java 2D.....................................................................................56
3.4.2. Giới thiệu một vài đối tượng đồ họa trong Java2D........................................57
3.4.3. Tương tác giữa chương trình hiển thị và Wave .............................................62
3.4.4. Tạo lưới ..........................................................................................................64
3.4.5. Tạo chướng ngại vật.......................................................................................69
3.4.6. Di chuyển .......................................................................................................71
CHƯƠNG 4.
CÁC BÀI TOÁN MÔ PHỎNG PHỨC TẠP ......................................... 75
4.1. Bài toán “Hồng cầu, Bạch cầu, Virus” .................................................................75
4.1.1. Mô tả chung....................................................................................................75
4.1.2. Hồng cầu ........................................................................................................75
4.1.3. Bạch cầu .........................................................................................................76
4.1.4. Virus ...............................................................................................................77
4.2. Bài toán “Rầy nâu” ...............................................................................................79
4.2.1. Mô tả chung....................................................................................................79
4.2.2. Chi tiết bài toán ..............................................................................................83
CHƯƠNG 5.
3D VÀ THỰC TẠI ẢO.......................................................................... 87
5.1. Giới thiệu công nghệ 3D.......................................................................................87
5.1.1. Công nghệ 3D ................................................................................................87
5.1.2. Giới thiệu về Java 3D.....................................................................................88
5.2. Chương trình GnuPlot...........................................................................................88
3
5.3. Ngôn ngữ VRML ..................................................................................................90
5.3.1. Khái niệm VRML và các phiên bản của VRML ...........................................90
5.3.2. Ngôn ngữ VRML ...........................................................................................92
5.4. Sử dụng Wave và GnuPlot....................................................................................94
5.4.1. Giới thiệu chung.............................................................................................94
5.4.2. Đọc file và tạo KN .........................................................................................95
5.4.3. Cập nhật dữ liệu .............................................................................................95
5.4.4. Duyệt KN và tạo file đầu vào cho GnuPlot ...................................................95
5.5. Thực tại ảo ............................................................................................................95
5.5.1. Giới thiệu chung.............................................................................................95
5.5.2. Đọc file và tạo KN .........................................................................................96
5.5.3. Cập nhật VRML...........................................................................................103
5.5.4. Duyệt KN và tạo file VRML........................................................................104
5.5.5. Thay đổi cách nhìn .......................................................................................105
5.5.6. Hiển thị trên nhiều máy tính.........................................................................107
CHƯƠNG 6.
CÀI ĐẶT VÀ THỬ NGHIỆM............................................................. 112
6.1. Cài đặt .................................................................................................................112
6.1.1. Các yêu cầu về phần cứng............................................................................112
6.1.2. Các yêu cầu về phần mềm............................................................................112
6.2. Thử nghiệm .........................................................................................................113
6.2.1. Sử dụng chương trình...................................................................................113
6.2.2. Tạo lưới thực địa ..........................................................................................115
6.2.3. Di chuyển tự do ............................................................................................116
6.2.4. Di chuyển tránh chướng ngại vật .................................................................118
6.2.5. Di chuyển vòng quanh chướng ngại vật.......................................................120
6.2.6. Di chuyển cùng nhau kiểu tịnh tiến .............................................................124
6.2.7. Hiển thị hình ảnh 3D động bằng GnuPlot....................................................124
6.2.8. Hiển thị hình ảnh 3D của tệp tin VRML......................................................126
4
6.2.9. Hiển thị hình ảnh 3D với các góc nhìn khác nhau .......................................126
6.2.10.
CHƯƠNG 7.
Hiển thị hình ảnh 3D VRML trên nhiều máy ...........................................128
PHỤ LỤC A – WAVE CODE ............................................................. 130
7.1. Tạo lưới đơn hướng ............................................................................................130
7.2. Tạo lưới theo đa hướng.......................................................................................132
7.3. Di chuyển tự do...................................................................................................133
7.4. Di chuyển tránh chướng ngại vật........................................................................134
7.5. Di chuyển vòng quanh chướng ngại vật .............................................................136
7.6. Nhìn trong không gian với độ sâu cho trước ......................................................138
7.7. Di chuyển cùng nhau kiểu tịnh tiến ....................................................................139
7.7.1. Chuỗi wave chạy theo ..................................................................................139
7.7.2. Chuỗi wave dẫn đầu .....................................................................................140
CHƯƠNG 8.
PHỤ LỤC B – TÀI LIỆU THAM KHẢO ........................................... 142
5
MỤC LỤC HÌNH VẼ
Hình 1-1.Mô hình Wave.....................................................................................................13
Hình 2-1.Knowledge Network ...........................................................................................16
Hình 2-2.Thành phần của Spread Diagrams ......................................................................27
Hình 2-3.Tự động tách trong chuỗi Wave..........................................................................28
Hình 2-4.Một số trường hợp xử lý song song ....................................................................29
Hình 2-5.Wave xử lý song song có kèm theo Rule............................................................30
Hình 2-6.Xử lý tuần tự không Rule và có Rule..................................................................31
Hình 2-7.Wave xử lý tuần tự có Rule.................................................................................32
Hình 2-8.Một số trường hợp với mệnh đề If – else............................................................33
Hình 2-9.Một số trường hợp với mệnh đề If – else............................................................33
Hình 2-10.Else – if với filter ..............................................................................................34
Hình 2-11.Else – if parallel ................................................................................................34
Hình 2-12.Else – if với Rule...............................................................................................35
Hình 2-13.Switch................................................................................................................35
Hình 2-14.Câu lệnh lặp sử dụng Repetition .......................................................................36
Hình 2-15.Câu lệnh lặp sử dụng Recursion........................................................................37
Hình 3-1.Lưới thực địa .........................................................................................................1
Hình 3-2.Tạo lưới đơn hướng...............................................................................................1
Hình 3-3.Tạo lưới đa hướng .................................................................................................1
Hình 3-4.Di chuyển tự do .....................................................................................................1
Hình 3-5.Di chuyển tránh chướng ngại vật ..........................................................................1
Hình 3-6.Di chuyển vòng quanh chướng ngại vật................................................................1
6
Hình 3-7.Nhìn trong không gian với độ sâu cho trước ........................................................1
Hình 3-8.Đuổi bắt trong không gian.....................................................................................1
Hình 3-9.Di chuyển cùng nhau kiểu tịnh tiến ......................................................................1
Hình 3-10.Giao diện người dùng........................................................................................56
Hình 3-11.Hệ tọa độ màn hình .............................................................................................1
Hình 3-12.Vẽ đường thẳng ...................................................................................................1
Hình 3-13.Vẽ hình chữ nhật .................................................................................................1
Hình 3-14.Vẽ hình elip .........................................................................................................1
Hình 3-15.Vẽ hình tròn.........................................................................................................1
Hình 3-16.Sự liên hệ giữa WAVE và chương trình hiển thị................................................1
Hình 3-17.Lưới thực địa quy ước.........................................................................................1
Hình 3-18.Lưới thực địa trong chương trình đồ họa ..........................................................65
Hình 3-19.Lưới thực địa với gốc là tọa độ (6-1) ..................................................................1
Hình 3-20. Chướng ngại vật tại tọa độ (4,4) ......................................................................70
Hình 3-21. Chướng ngại vật được tạo liên tiếp ..................................................................71
Hình 3-22. Tạo node với tọa độ (1-1) và màu đỏ...............................................................73
Hình 3-23.Tạo node với tọa độ (3-2) và màu xanh ............................................................73
Hình 3-24. Di chuyển node trên lưới thực địa....................................................................74
Hình 5-1.Xe đạp được thể hiện với công nghệ 2D.............................................................87
Hình 5-2.Xe đạp được thể hiện với công nghệ 3D.............................................................88
Hình 5-3.Đồ thị hàm sin(x) ................................................................................................89
Hình 5-4.Đồ thị hàm x2 + y2 hiển thị 3D............................................................................90
Hình 5-6.Khối cầu với bán kính 10 trong VRML ..............................................................93
7
Hình 5-5.Tọa độ trong VRML..............................................................................................1
Hình 5-7.KN dạng cây của file VRML ................................................................................1
Hình 5-8.Sơ đồ khối thuật toán Parser .................................................................................1
Hình 5-9.Sơ đồ khối thuật toán kiểm tra một file có phải là VRML hay không..................1
Hình 5-10.KN sau khi thêm node mới .................................................................................1
Hình 5-11.Hai cách nhìn khác nhau trong VRML ...............................................................1
Hình 5-12.Cách nhìn ban đầu...............................................................................................1
Hình 5-13.Một cách nhìn khác .............................................................................................1
Hình 5-14.Hiển thị trên nhiều máy tính ...............................................................................1
Hình 5-15.Mỗi máy tính hiển thị một khu vực khác nhau ...................................................1
Hình 5-16. Đặt nút start tại một node khác node gốc...........................................................1
Hình 6-1. Chương trình hiển thị khi mới được chạy ........................................................113
Hình 6-2. Chương trình WAVE khi bắt đầu chạy...........................................................114
Hình 6-3. Lưới 5x5 ...........................................................................................................115
Hình 6-4. Cửa sổ output của Netbeans.............................................................................115
Hình 6-5. Vị trí đầu tiên 1-1 .............................................................................................116
Hình 6-6. Chạy ngẫu nhiên tới vị trí tiếp theo..................................................................116
Hình 6-7. Các bước chạy ngẫu nhiên tiếp theo ....................................................................1
Hình 6-9. Dừng khi chạy tới đích.....................................................................................118
Hình 6-8. Tiếp tục chạy ngẫu nhiên .....................................................................................1
Hình 6-10. Di chuyển qua chướng ngại vật..........................................................................1
Hình 6-11. Vượt qua chướng ngại vật và về đến đích..........................................................1
Hình 6-12. Di chuyển vòng quanh chướng ngại vật.............................................................1
8
Hình 6-13. Vòng quanh chướng ngại vật 1 vòng thì dừng...................................................1
Hình 6-14. Di chuyển tịnh tiến cùng nhau ...........................................................................1
Hình 6-15. Hình ảnh 3D trên máy thứ nhất sử dụng GnuPlot..........................................125
Hình 6-16. Hình ảnh 3D trên máy thứ hai sử dụng GnuPlot............................................125
Hình 6-17. Tệp tin VRML được hiển thị sau khi được tạo bởi KN .................................126
Hình 6-18. Các đối tượng hiển thị theo cách khác thi thay đổi Transform......................127
Hình 6-19. Một cách nhìn khác thi thay đổi Transform...................................................127
Hình 6-20. Hiển thị đối tượng đầu tiên trên máy 1 ..........................................................128
Hình 6-21. Hiển thị đối tượng thứ hai trên máy 2............................................................129
9
CHƯƠNG 2. GIỚI THIỆU
2.1. Giới thiệu về mô phỏng
Mô phỏng là làm giống như, bắt chước như… một đối tượng, hiện tượng nào đó
phục vụ được cho rất nhiều mục đích sử dụng.
Mô phỏng song song phân tán là công nghệ cho phép một chương trình giả lập có
thể được thực thi song song hoặc phân tán trên một hệ thống máy tính với nhiều máy tính
kết nối với nhau. Chương trình mô phỏng trên máy tính là sự tính toán để mô tả các thể
hiện của hệ thống thật hoặc giả lập. Ngày nay, mô phỏng được ứng dụng rộng rãi trong
các nhiều mặt của cuộc sống, như giáo dục, giao thông, y tế…
Với mô phỏng phân tán và mô phỏng song song, một chương trình mô phỏng có thể
thực thi trên một máy tính có nhiều bộ vi xử lý như PC.Độ lớn và phức tạp của các
chương trình giả lập ngày càng tăng theo thời gian. Trong một chương trình mô phỏng
phân tán lớn với nhiều đối tượng, một PC có thể không đủ bộ nhớ và khả năng tính toán
để thực hiện. Việc phân tán thực thi trên nhiều máy tính có thể giúp tăng hiệu quả xử lý
và lưu trữ hơn là làm trên một máy như trên. Các máy tính có thể được phân tán trong các
vùng địa lý khác nhau, ví dụ như trong các phòng của một tòa nhà, trong một thành phố,
hoặc rộng hơn là trên toàn thế giới.
Bằng việc chia nhỏ một khối lượng tính toán mô phỏng lớn sang các khối tính toán
bé hơn, và thực thi các khối đó đồng thời với N bộ vi xử lý, ta có thể tăng tốc độ lên N lần
so với trên 1 bộ vi xử lý trên một máy. Trong các bộ mô phỏng trên máy tính việc giảm
thời gian thực thi rất quan trọng bởi vì các kĩ sư sẽ không muốn phải đợi một thời gian dài
cho việc nhận kết quả trả về bởi chương trình. Trong việc mô phỏng thực tại ảo, nơi mà
con người hòa mình vào, thời gian xử lý đóng một vai trò rất quan trọng giúp mô phỏng
được thực hơn, mang hiệu quả cao hơn. Thực thi mô phỏng trên các máy tính phân tán
trên các vùng địa lý khác nhau giúp chúng ta linh hoạt hơn, không bị hạn chế về không
gian. Khi nhiều máy tính cùng thực thi song song, nếu một máy tính bị lỗi, các máy tính
10
khác vẫn có thể hoạt động tính toán bình thường. Điều này giúp tăng hiệu suất lên đáng
kể.
Việc tìm kiếm một ngôn ngữ hỗ trợ cho mô phỏng đáp ứng tốt các yêu cầu của mô
phỏng có vai trò rất lớn. Ngôn ngữ WAVE dùng cho mô phỏng vốn đã song song, xử lý
trên các cấu trúc dạng đồ thị và phân tán giữa các nút xử lý. Tất cả các chương trình
WAVE đều mang tính di động cao và thông dịch. Điều đó giúp giảm tải mạng, giảm thời
gian truyền dữ liệu dẫn đến giảm thời gian chờ đợi chung của mô phỏng phân tán song
song.
2.2. Công nghệ WAVE
Ngày nay, các hệ thống mở và mạng máy tính đang phát triển rất nhanh và được cả
thế giới quan tâm. Hệ thống mạng máy tính kết nối công việc từ khắp nơi trên thế giới,
mạng máy tính cũng giữ một khối lượng khổng lồ dữ liệu dịch vụ và thông tin. Những
công cụ tương tác không chỉ để tìm kiếm thông tin, dịch vụ hoặc file ngay trên máy tính
mà còn được mở rộng về địa lý, không gian… và hoàn toàn mở trên Internet. Một ví dụ
điển hình ở đây chính là World Wide Web. Tuy nhiên, hầu hết các mô hình và công cụ
lập trình phân tán thiếu đi khả năng linh hoạt để khai thác thông tin về cấu trúc mở một
cách tự động.
Những mô hình lập trình và hệ thống phân tán truyền thống thường dựa trên dữ liệu
đóng. Công việc được xử lý trong các ứng dụng phân tán thường phải được định nghĩa
trước hoặc được gọi thông qua việc kích hoạt thủ tục, phương thức. Phần lớn việc xử lý
và tương tác thông qua việc trao đổi thông điệp chứa dữ liệu. Ngoài ra hệ thống phân tán
có thể cung cấp dữ liệu và dịch vụ chia sẻ. Trong mạng máy tính, dịch vụ và thông tin chỉ
nằm ở các máy chủ ứng dụng (ví dụ như việc sử dụng của các tổ chức kinh doanh…). Tuy
nhiên, phương pháp tiếp cận này vẫn chưa tối ưu. Do đó, chúng ta sẽ cần phải tích hợp
linh hoạt các máy chủ ứng dụng trong một hệ thống tổng thể và có cơ sở hạ tầng mở hơn
nữa.
WAVE không chỉ là một mô hình. Wave còn là công nghệ dựa trên sự liên kết và
điều khiển của các hệ thông lớn được hỗ trợ bởi mạng máy tính và viễn thông. Wave cho
11
phép linh động tạo các cấu trúc điều khiển và việc xử lý mạng tri thức (phân tán và song
song) thông minh. Các cấu trúc này có thể cung cấp khả năng tự tổ chức, phục hồi, tạo
khuôn mẫu để kết nối tới các hệ thống khác. Công nghệ này dựa trên việc cài đặt nhiều
tác nhân thông minh trên hệ thống phân tán để tối ưu hóa việc xử lý dữ liệu cục bộ thông
qua việc lan tỏa thông tin ở các hệ thống nhỏ với nhau hoặc ở hai hệ thống nhỏ khác nhau.
Tất cả công việc trên đều được thông dịch qua ngôn ngữ Wave. Mã đệ quy được viết từ
ngôn ngữ này có khả năng tự lan tỏa trong không gian hệ thống. Không giống các hệ
thống truyền thống, nó là một hệ thống dựa trên sự linh động của chương trình có thể tùy
ý mở rộng về mặt địa lý và hỗ trợ nhiều máy tính trên mạng. Trong Wave, chương trình
có thể cho vào trong hệ thống bất kỳ chỗ nào. Khi đó các chương trình này có khả năng
lan tỏa qua mạng như virus. Nhiều người sử dụng có thể độc lập phát triển các chương
trình Wave hoặc liên kết trong cùng một hệ thống không gian, chia sẻ biến cục bộ (biến
này được liên kết với Node) với các biến khác (được kèm theo sự di chuyển của mã
Wave). Nói cách khác:
• Wave là một ngôn ngữ, model đặc biệt và là công nghệ mới cho hệ thống song
song, phân tán hay kết hợp các hệ thống đó với nhau.
• Wave ban đầu được thiết kế cho việc mô phỏng mạng ảo như là mạng tri thức
(Knowledge Networks).
• Wave dựa trên các chương trình mà có thể lan tỏa, mở rộng, chia nhỏ và có thể
tự hồi đáp trong những mạng tri thức đã được kích hoạt.
12
Hình 2-1.Mô hình Wave
13
CHƯƠNG 3. NGÔN NGỮ WAVE
Trong phần này chúng tôi trình bày về cú pháp và ngữ nghĩa của ngôn ngữ Wave.
Đây là một ngôn ngữ đặc biệt cho phép tạo và xử lý thông tin trong không gian mạng theo
hướng. Chương trình viết bằng ngôn ngữ này có thể được coi như những thành phần linh
hoạt, có khả năng di động và kết hợp với các thành phần riêng lẻ, phân tán khác. Trong
quá trình “di chuyển”, chương trình có thể mang theo dữ liệu đồng thời cập nhật vào dữ
liệu lưu tại mạng KN. Các chương trình mặc dù được xử lý song song nhưng vẫn có
những cơ chế cho phép chúng phối hợp đồng bộ với nhau thông qua hệ thống các luật.
Ở phần cuối chương này chúng tôi còn đề cập tới một vấn đề nữa: Wave và các phương
pháp lập trình truyền thống (lập trình tuần tự và lập trình song song).
3.1. Giới thiệu về ngôn ngữ Wave
Wave là một ngôn ngữ đặc biệt cung cấp khả năng thực thi mềm dẻo, đa người dùng
trên hệ thống phân tán. Quá trình thực thi của ngôn ngữ Wave giống như virus, tức là có
khả năng nhân bản và lan tỏa qua mạng, thực thi phân tán mà không cần bất kỳ sự điều
khiển tập trung nào.
Kiến trúc Wave mô tả quá trình xử lý phân tán qua việc tự định hướng luồng chương
trình qua không gian dữ liệu phân tán có cấu trúc như một đồ thị hay được gọi là
Knowledge Network. Các node trên mạng phân tán thuộc về một Wave Interpreter nào
đấy. WI là thành phần có trách nhiệm thực thi trên từng bộ phận riêng lẻ của mạng, thao
tác lên dữ liệu được lưu trữ trong các node.Trong khi di chuyển, những thành phần của
mã Wave có thể tự nhân bản, phân chia hay được chỉnh sửa trong khi vẫn duy trì sự trao
đổi dữ liệu qua lại lẫn nhau.
3.2. Node, Link và Không gian phân tán : Knowledge Network (KN)
Định nghĩa:
14
• Node: Có thể coi là một đối tượng – hay một điểm trong không gian, chứa các
biến (biến là thuộc tính của node)
• Link: Có thể coi là một quan hệ giữa các nút - hay một đoạn, đường thẳng
trong không gian. Nó cũng có các thuộc tính
Wave tạo và xử lý KN – là tập hợp các node và các link có hướng hoặc vô hướng.
Cả node và link đều có nội dung riêng của mình (kiểu giá trị là string). KN có thể được
phân tán trong không gian mạng, tồn tại trên nhiều máy tính khác nhau. Mỗi máy tính có
thể không chứa hoặc chứa nhiều node của KN và các link có thể kết nối tới các node
trong cùng máy tính hoặc với các máy tính khác.
Tất cả các node đều có địa chỉ duy nhất trong không gian phân tán bao gồm 2 thành
phần: thành phần thứ nhất để phân biệt các node trong cùng một máy, và thứ hai là để
phân biệt các node giữa các máy khác nhau trong không gian mạng. Node có thể được
truy cập qua các node khác một cách trực tiếp bằng Content hay bằng Address của
chúng hoặc qua quá trình mở rộng qua các link của KN, việc đặt tên cho link và node
nhằm phục vụ điều này. Có 2 kiểu nhảy qua lại giữa các node đó là direct hop và surface
hop để thực hiện việc nhảy tới 1 node hay có thể nhảy đến tất cả các node khác – được
dùng cho việc gửi quảng bá.
Không giống với node, link của KN không thể truy xuất trực tiếp qua tên. Dữ liệu
lưu trữ trong link chỉ có thể nhận được hoặc thay đổi một cách cục bộ, trong quá trình di
chuyển qua link hay khi đứng trực tiếp tại một node cụ thể nào đó. Từ một node, cả nội
dung và hướng của link có thể truy xuất trực tiếp.
Ví dụ:
15
Hình 3-1.Knowledge Network
3.3. Tổ chức chung của ngôn ngữ Wave
Ngôn ngữ Wave đặc trưng cho quá trình lan tỏa song song trong không gian dữ liệu
phân tán được biết là KN. Do vậy cú pháp của ngôn ngữ miêu tả rõ quá trình hoạt động
này:
wave Æ {{move , } . }
move Æ { data_unit act
} | [rule] (Wave) }
rule ÆSQ | OS | AS | AP | RP | WT | ID | CR
unit Æ{ stirng; } | N{l_d} | F{l_d} | C | A | P | S | L | T |
act Æ# | ~ | /~ | == | / = | < | <= | + | - | * | / |** | | | % | & | : | :: | = | ? | !
trong đó các phần nằm trong [] là tùy chọn
Một chương trình Wave hay gọi đơn giản là Wave bao gồm sự kết hợp các tác động
lên KN gọi là các move – thành phần có thể thực hiện xử lý dữ liệu cục bộ tại các Node
của KN và mở rộng tới các Node khác. Quá trình thực thi song song hay thực thi không
theo thứ tự được tách biệt bởi dấu phẩy (,) phát triển một cách độc lập từ cùng một Node
16
trong KN. Tập các moves độc lập gọi là zone, được tách biệt nhau bởi dấu chấm câu (.),
các thành phần này sẽ được thực thi một cách tuần tự.
Ví dụ:
Ft={Fa=1;2;3}. Fa+1. ^Ft.T=Fa
Các Rule trong Wave cung cấp cho Wave khả năng mở rộng trong không gian
mạng, kết hợp cùng với các Wave khác. Một ví dụ, các luật có thể tự động tách Wave ra
thành nhiều nhánh riêng biệt rồi sau đó phát triển chúng song song hoặc tuần tự trong KN,
chúng có thể tạo ra hoặc mở rộng KN trong khi di chuyển. Các Rule sẽ được làm rõ hơn
trong phần sau.
Một cách tổng quát, việc thực thi phần đầu của Wave (Wave’s Head) tại một vài
Node có thể là nguyên nhân dẫn tới quá trình lan tỏa của Tail của chuỗi Wave (Wave’s
Tail) tới 0 hay nhiều các Node khác – chúng ta sẽ gọi chúng là tập các Node tới được
(SNR).
Ví dụ:
• w1.w2.w3.w4: cấu trúc của một chương trình Wave - sự nối tiếp của các zones
• w1,w2,w3: zone đơn lẻ với tập các move độc lập, tất cả đều được thực thi tại
cùng một Node bắt đầu
• w1,w2.w3,w4: sự kết hợp của 2 kiểu trên
3.4. Cấu trúc dữ liệu cơ bản của Wave
Wave là ngôn ngữ được dùng cho quá trình xử lý trên mạng, nhưng không giống các
ngôn ngữ khác, kiểu dữ liệu cơ sở không phản ánh việc đó. Wave sử dụng kiểu dữ liệu cơ
sở là Vector: là tập các string được phân tách nhau bới dấu chấm phẩy (;). Tất cả các hoạt
động của ngôn ngữ đều thực thi trên Vector. Truy cập tới thành phần của Vector có thể
17
thông qua chỉ số hay chính nội dung của các thành phần trong Vector – indexing và
contenting. Dữ liệu lưu trữ trong Vector là động, tức có thể thay đổi khi có sự thêm bớt
dữ liệu một cách tự động.
Ví dụ:
• Vector chứa 1 phần tử: 3
• Chứa 6 phần tử: 1;2;3;4;5;6
• Chứa nhiều kiểu dữ liệu khác nhau: 34;NONE;25;;a;;;b
3.5. Biến Spatial và kiểu
Wave thao tác trên kiểu biến được gọi là spatial variable, chúng nằm phân tán và
thường liên quan tới dữ liệu cục bộ tại các Node của KN hay có thể thuộc về một chuỗi
Wave nào đó. Biến kiểu này được chia làm 2 loại: task variable và environment
variable
3.5.1.
Task variables
Task variable bao gồm: node variable và frontal variable. Các biến kiểu nodal được
lưu cục bộ tại node của KN, các biến kiểu frontal có thể đi cùng Wave qua các node khác
nhau trong mạng. Cả 2 loại biến này đều là tạm thời.
9 Biến Nodal: các biến loại này được khai báo bắt đầu bằng ký tự N
9 Biến Frontal: các biến loại này được khai báo bắt đầu bằng ký tự F
3.5.2.
Environment variables
Biến môi trường có những định danh và ý nghĩa khác nhau:
18
9 CONTENT (C): chứa content của Node hiện thời. Giá trị của C luôn là
string, việc thay đổi nội dung của C có thể được gán trực tiếp bằng giá trị
nào đó hoặc NONE – xóa Node cùng với các Link liên kết với nó.
9 ADDRESS (A): địa chỉ của Node hiện thời. Luôn trả lại địa chỉ đầy đủ của
Node nơi Wave đang đứng gồm định danh của Node trong máy và định
danh của Node trong mạng. Đây là biến chỉ đọc.
9 PREDECESSOR (P): biến lưu địa chỉ của Node trước đó Wave đã đi qua.
Nó chỉ thay đổi khi có sự di chuyển của Wave sang Node khác.
9 LINK (L): chứa content của Link vừa mới đi qua.
9 TERMINAL (T): một loại biến đặc biệt dùng để in ra giá trị tương ứng tại
một đầu cuối nào đó.
Ví dụ:
• Biến Nodal: N, Nhieu, Ntue…
• Biến Frontal: Fpath, Ftemp…
• Biến môi trường: TERMINAL, LINK, L…
3.6. Các hành động – ACTS
3.6.1.
Control acts
Các Act thực hiện các phép toán cơ bản bên trong move, dùng để thay đổi giá trị các
biến, thay đổi trạng thái hoạt động của wave. Giá trị trả về gồm 3 loại chính sau:
• TRUE (2): thành công và cho phép Wave tiếp sau đó thực thi tại Node hiện
thời.
19
• DONE (1): thành công nhưng không cho phép Wave thực thi tiếp tại Node hiện
thời.
• FALSE (0): thất bại, loại bỏ Wave tại Node hiện thời.
Control acts được phân loại như hop, filters, assignment, state genertator và code
injection.
Hop. Được thực thi bằng toán hạng #. Ta sẽ hiểu rõ hơn cách thực thi của Hop qua các Ví
dụ sau:
• DIRECT # ANY, cách viết khác @#: nhảy tới tất cả các node khác trong KN
trên cùng máy tính từ một node nào đó
• -p#b: nhảy từ node hiện thời theo cung đi ra (-)p tới node b
• ANY#ANY hay #: nhảy qua tất cả các link tới tất cả hàng xóm của một node
• Và một số kiểu nhảy khác: x#ANY, ANY#x
• Để nhảy sang 1 node ở máy khác ta có cấu trúc: a#b$$`IP, trong đó IP là địa chỉ
IP của máy đích
Filter. Các filter gồm các phép toán sau đây: ~ (thuộc về), /~ (không thuộc về), == (so
sánh bằng), /= (so sánh không bằng), < (so sánh nhỏ hơn), <= (so sánh nhỏ hơn hoặc
bằng), > (so sánh lớn hơn), >= (so sánh lớn hơn hoặc bằng). Giá trị trả về sẽ là TRUE
hoặc FALSE. Nếu giá trị trả về là TRUE, node hiện thời sẽ trở thành một SNR và Wave
tail sẽ tiếp tục phát triển từ node này.
• Filter ~:
o Cú pháp: vector1 ~ vector2
o Chức năng: kiểm tra các phần tử của vector 1 có nằm trong vector 2 hay
không
20
- Xem thêm -