chỗ đã thực hiện xong thì dãy khóa lúc đó được phân làm hai đoạn: một đoạn gồmkhóa nhỏ hơn chốt, một đoạn gồm các khóa lớn hơn chốt, còn khóa chốt thì nằm giữahai khóa trên, đó cũng chín
Trang 1LỜI MỞ ĐẦU
Trong bối cảnh công nghệ thông tin đang phát triển như vũ báo trên toàn thế giới
và dần trở nên phổ biến, hầu như mọi lĩnh vực đều có sự góp mặt của ngành công nghệmới này Công nghệ thông tin đang từng ngày làm thay đổi và tác động mạnh vào từnglĩnh vực đời sống, kinh tế - xã hội của con người và đang giữ vai trò hết sức quan trọngcho sự tăng trưởng của nền kinh tế toàn cầu
Cùng với sự phát triển của thế giới và xu huớng hội nhập kinh tế quốc tế, đất nước
ta đang dần đổi mới và buớc vào thời kí công nghiệp hoá, hiện đại hoá, vừa xây dựng
cơ sở vật chất, kĩ thuật vừa phát triển nền kinh tế đất nuớc Hiện nay nước ta đang xâydựng và phát triển các ngành dịch vụ, khu công nghiệp, khu đô thị, cao ốc … Do đó,ngành công nghệ thông tin không thể nào thiếu và có vai trò rất quan trọng trong quátrình xây dựng và phát triển đất nước
Trong bản đề tài này em mới chỉ đề cập phần nào tới chuyên nghành tin học ứngdụng Em tin rằng đề tài này và những ứng dụng thiết thực của nó sẽ ngày càng manglại những lợi ích vô cùng to lớn đối với các ban ngành cùng mọi người dân và mộtngày không xa công nghệ viễn thông của Việt Nam sẽ sánh vai được với các nước pháttriển trên thế giới
Đặc biệt em xin cảm ơn cô Phạm Thị Phương Thảo đã tận tình và sửa chữa nhữngsai sót giúp em hoàn thành bài báo cáo này
Trang 2
LỜI MỞ ĐẦU 1
CÁC THUẬT TOÁN SẮP XẾP 4
1 SẮP XẾP TRONG 4
1.1.Sắp xếp lựa chọn (selection sort) 4
1.2 Sắp xếp thêm dần (insertion sort) 5
1.3 Sắp xếp kiểu đổi chỗ (exchange sort) 6
1.4 Sắp xếp theo kiểu phân đoạn (Partition – Sort) hay sắp xếp nhanh (Quick – Sort) 8
1.5 Sắp xếp vun đống 12
2 SẮP XẾP NGOÀI 15
2.1 Sắp xếp bằng phương pháp trộn (merge sort) 15
2.2 Sắp xếp theo chỉ mục (Index Sort) 17
TỔNG QUAN MẠNG MÁY TÍNH 20
1 Định nghĩa 20
2 Các loại mạng máy tính 20
2.1 Mạng cục bộ LAN (Local Area Network) 21
2.2 Mạng đô thị MAN (Metropolitan Area Network) 21
2.3 Mạng diện rộng WAN (Wide Area Network) 21
2.4 Mạng Internet 22
3 Kiến trúc mạng 22
3.1 Các topo mạng 22
3.2 Các giao thức (Protocol) 27
3.3 Một số bộ giao thức kết nối mạng 28
3.4 Bộ giao thức TCP/IP(TCP/IP - Transmission Control Protocol/ Internet Protocol ) 28
3.5 Một số giao thức cơ bản trong bộ giao thức TCP/IP 31
4 Đường truyền 39
4.1 Các loại đường truyền và các chuẩn của chúng 39
4.2 Hệ thống cáp mạng dùng cho LAN 40
4.3 Các yêu cầu cho một hệ thống cáp 44
4.4 Các thiết bị dùng để kết nối LAN 44
5 Hệ điều hành mạng 47
5.1 Hệ điều hành mạng UNIX 47
5.2 Hệ điều hành mạng Windows NT 47
5.3 Hệ điều hành mạng Windows for Worrkgroup 47
5.4 Hệ điều hành mạng NetWare của Novell 47
HỆ THỐNG DỊCH VỤ WEB 47
1 Những khái niệm cơ bản về hệ thống Web 47
1.1 Nguồn gốc của World Wide Web 48
1.2 Khái niệm về Web 48
Trang 31.3 Siêu liên kết 48
1.4 Địa chỉ của Web 48
1.5 Mô hình Web Client-Server 49
1.6 Giao thức HTTP (Hypertext Transfer Protocol) 50
1.7 Phân loại Web 51
2 Một số dịch vụ web cơ bản 52
2.1 Công cụ tìm kiếm (search tool): 52
2.2 Blog: 54
2.3 Trình nhắn tin nhanh trực tuyến 54
DỊCH VỤ THƯ ĐIỆN TỬ 56
1 - KHÁI NIỆM CHUNG VỀ HỆ THỐNG THƯ ĐIỆN TỬ 56
1.1 Giới thiệu thư điện tử 56
1.2 Kiến trúc và hoạt động của hệ thống thư điện tử 57
1.3 Giới thiệu về hệ thống DNS và cấu trúc của địa chỉ thư điện tử : 64
2 - GIỚI THIỆU VỀ MAIL CLIENT 68
2.1 Các tính năng cơ bản của một mail client 68
2.2 - Các tính năng nâng cao của mail client : 68
3 - QUẢN TRỊ HỆ THỐNG THƯ ĐIỆN TỬ 69
3.1 - Khái niệm quản trị hệ thống thư điện tử 69
3.2- Mô hình hoạt động của hệ thống thư điện tử 70
4 - QUẢN TRỊ HỆ THỐNG MDAEMON 72
5 – Một số lỗi thường gặp trong thư điện tử 74
5.1.Một số mã lỗi của thư điện tử và cách giải quyết 74
5.2 Lỗi tại phía mail server 74
5.3 Lỗi phía người dùng 76
KẾT NỐI MÁY TÍNH VỚI INTERNET 76
1 Tổng quan về Internet: 77
1 1 Lịch sử phát triển của Internet 77
1 2 Kiến trúc hạ tầng Internet 79
1 3 Xu hướng phát triển của Internet 80
2 Một số phương thức kết nối Internet phổ biến 81
2.1 Các hệ thống dùng dịch vụ điện thoại (telephony) 81
2.2 Các hệ thống không dùng dịch vụ điện thoại (non-telephony) 86
3 Kỹ thuật kết nối 87
3.1 Kết nối Dial-up : 87
3.2 Kết nối ADSL 91
PHÂN CHIA Ổ ĐĨA CỨNG 94
1 Tổng quan 94
1.1 Lịch sử phát triển 95
1.2 Cấu tạo 96
Trang 42 Phân chia ổ đĩa cứng 97
2.1 Phân chia ổ đĩa cứng với FDisk 97
2.2 Phân chia ổ đĩa cứng với PartitionMagic 99
CÀI ĐẶT HỆ ĐIỀU HÀNH 106
1 Tổng quan hệ điều hành Windows XP 106
2 Cài đặt hệ điều hành Windows XP 107
3 Cài đặt hệ điều hành Linux Ubuntu 10.04 song song với Windows XP 110
CÀI ĐẶT MỘT SỐ PHẦN MỀM THÔNG DỤNG 114
1 Vietkey 2000 114
1.1 Tổng quan 114
1.2 Các bước cài đặt Bước 1: Cài đặt: 115
2 Microsoft Office 2003 115
2.1 Tổng quan 116
2.2 Các bước cài đặt 116
3 Turbo Pascal 118
3.1 Tổng quan 118
3.2 Các bước cài đặt 118
4.1 Tổng quan 119
4.2 Các bước cài đặt 119
5 Visual FoxPro 120
5.1 Tổng quan 120
5.2 Các bước cài đặt 121
GHOST 123
1 Tổng quan 123
2 Quá trình tạo file Ghost 123
3 Quá trình sử dụng chương trình Ghost 125
TÀI LIỆU THAM KHẢO……….143
Trang 5CÁC THUẬT TOÁN SẮP XẾP
1 SẮP XẾP TRONG
1.1.Sắp xếp lựa chọn (selection sort)
1.1.1 Khái niệm
Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị trí đúng là
đầu tiên của dãy hiện hành Sau đó không quan tâm đến nó nữa, xem dãy hiện hành chỉcòn n-1 phần tử của dãy ban đầu Bắt đầu từ vị trí thứ 2, lặp lại quá trình trên cho dãyhiện hành đến khi dãy hiện hành chỉ còn 1 phần tử Dãy ban đầu có n phần tử, tóm lại
là thực hiện n-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành về đúng vị trí ởđầu dãy
1.1.2 Các bước tiến hành
Bước 1: i=1
Bước 2: tìm phần tử a[min] nhỏ nhất trong dãy hiện hành từ a[i]-> a[n]
Bước 3: hoán vị a[min] và a[i]
Bước 4: nếu i<= n-1 thì i=i+1, lặp lại bước 2, ngược lại dừng n-1 phần tử đã nằmđúng vị trí
Trang 6Viod selection sort (int a[], int n)
{
Int min
For (int i= 0; i<n-1; i++)
Min= i;
For (int j=i+1; j<n; j++)
If (a[min]< a[min]); min=j;
Hoán vị (a[min], a[i]);
Dựa trên nguyên tắc này có thể triển khai cách sắp xếp như sau:
Đầu tiên B1 được coi như bảng chỉ gồm có 1 khóa đã sắp xếp Xét thêm B2, sosánh nó với B1 để xác định chỗ chèn nó vào, sau đó ta sẽ có 1 bảng gồm 2 khóa đãđược sắp xếp Đối với B3 lại so sánh với B2,B1 và tương tự như vậy với B4,B5,B6 cuối cùng sau khi xét xong Bn thì bảng khóa sẽ được sắp xếp hoàn toàn
Trang 7
234274 -
11234274 -
1123364258657494
112336425865749499-
11233642586574879599
1.2.3 Thuật toán
Procedure insert sort (B,n)
{ trong thủ tục này người ta dùng X làm ô nhớ phụ để chứa khóa mới đang được xét
Để đảm bảo khóa mới trong mọi trường hợp ngay cả khi vị trí thực của nó là vị trí đầu tiên, đều được chèn vào giữa khóa nhỏ hơn nó và khóa lớn hơn nó, ở đây đưa thêm vào
1 khóa giả B0, có giá trị nhỏ hơn mọi khóa của bảng, và đứng trước mọi khóa đó Ta quy ước B0= -∞}
Trang 88 Bảng ví dụ minh họa tương ứng với các lượt sắp xếp theo giải thuật này, tương
tự như bảng đã nêu ở trên, chỉ có khác là không có chỗ nào trống trong miền sắp xếp
cả, vì những chỗ đó
đang chứa các khóa, chưa được xét tới trong mỗi lượt
1.3 Sắp xếp kiểu đổi chỗ (exchange sort)
1.3.1 Khái niệm
Trong các phương pháp sắp xếp nêu trên,tuy kỹ thuật đổi chỗ đã được sử dụng nhưng
nó chưa trở thành một đặc điểm nổi bật Bây giờ ta mới xét tới phương pháp mà việc đổi chỗ một cặp khóa kề cận, khi chúng ngược thứ tự, sẽ được thực hiện thường xuyên cho tới khi toàn bộ bảng các khóa đã được sắp xếp.Ý cơ bản có thể nêu như sau:
Bảng các khóa sẽ được duyệt từ đáy lên đỉnh Dọc đường, nếu gặp hai khóa kề cận ngược thứ tự thì đổi chỗ chúng cho nhau Như vậy trong lượt đầu khóa có giá trị nhỏ nhất sẽ chuyển dần lên đỉnh Đến lượt thứ hai khóa có giá trị nhỏ thứ hai sẽ được chuyển lên vị trí thứ hai…Nếu hình dung dãy khóa được đặt thẳng đứng thì sau từng đợt sắp xếp các giá trị khóa nhỏ sẽ ‘nổi’ dần lên giống như các bọt nước nổi lên trong nồi nước đang đun sôi Vì vậy phương pháp này thường được gọi bằng cái tên khá đặc trưng là: sắp xếp kiểu nổi bọt (buble sort)
Trang 974 36 42 42 42 42
Trang 10là giới hạn cho việc xem xét ở lượt sau Chừng nào mà giới hạn này chính là vị trí thứ
n, nghĩa là trong lượt ấy không có một phép đổi chỗ nào nữa thì sắp xếp có thể kết thúcđược Nhận xét này sẽ dẫn tới một giải thuật cải tiến hơn, chắc chắn có thể làm cho sốlượt giảm đi và số lượng các phép so sánh trong mỗi lượt cũng giảm đi nữa
1.4 Sắp xếp theo kiểu phân đoạn (Partition – Sort) hay sắp xếp nhanh (Quick – Sort)
1.4.1 Khái niệm
Sắp xếp kiểu phân đoạn là một cải tiến của phương pháp sắp xếp kiểu đổi chỗ Đây
là một phương pháp khá tốt, do đó người sáng lập ra nó C.A.R Hoare, đã mạnh dạn đặtcho nó cái tên hấp dẫn là sắp xếp NHANH
Ý chủ đạo của phương pháp có thể tóm tắt như sau:
Chọn mọt khóa ngẫu nhiên nào đó của dãy làm ‘chốt’ (pivot) Mọi phần tử nhỏ hơnkhóa ‘chốt’ phải được xếp vào vị trí ở trước ‘chốt’ (đầu dãy), mọi phần tử lớn hơn khóa
‘chốt’ phải được xếp vào vị trí sau ‘chốt’ (cuối dãy) Muốn vậy, các phần tử trong dãy
sẽ được so sánh với khóa chốt và sẽ đổi vị trí cho nhau, hoặc cho tốt, nếu nó lớn hơn
‘chốt’ mà lại nằm trước chốt hoặc nhỏ hơn ‘chốt’ mà lại nằm sau ‘chốt’ Khi việc đổi
Trang 11chỗ đã thực hiện xong thì dãy khóa lúc đó được phân làm hai đoạn: một đoạn gồmkhóa nhỏ hơn chốt, một đoạn gồm các khóa lớn hơn chốt, còn khóa chốt thì nằm giữahai khóa trên, đó cũng chính là vị trí của nó trong dãy khi đã được sắp xếp, tới đây coinhư kết thúc một lượt sắp xếp.
Ở các lượt tiếp theo cũng áp dụng một kỹ thuật tương tự đối với các phân đoạn còn lại
Lẽ tất nhiên chir có 1 phân đoạn được xử lý ngay sau đó, còn 1 phân đoạn phải để lúckhác, nghĩa là phải được ghi nhớ lại
Quá trình xử lý 1 phân đoạn, ghi nhớ phân đoạn còn lại được thực hiện tiếp tục cho tớkhi gặp một phân đoạn chỉ gồm một phần tử thì việc ghi nhớ không cần nữa Lúc đó 1phân đoạn mới sẽ được xác định và đối với phân đoạn này quá trình lặp lại tương tự.Sắp xếp sẽ kết thúc khi phân đoạn cuối cùng đã được xử lý xong
Giả sử ta thể hiện việc phân đoạn như trên bảng 1 thủ tục, mà ta sex gọi là thủ tụcPART (K, LB, UBj) với quy ước: LB là chỉ số của phần tử đầu của dãy khóa đangxét(gọi tắt là biên dưới) vad UB là chỉ số của phần tử cuối cùng của dãy khóa đó (ta gọitắt là biên trên) Còn K là vecto biểu diễn dãy khóa cho, j là chỉ số ứng với khóa chốtsâu khi đã tách dãy khóa đang xét thành 2 phân đoạn
1.4.3 Thuật toán
Trang 12Với thục tục PART này thì thủ tục đệ quy thể hiện phương pháp sắp xếp Nhanh có thểviết như sau:
Procedure quick sort (K, LB, UBj);
1 if LB< UB then begin
2 call PART (K, LB, UBj);
3 call quick sort (K, LB, j-1);
4 call quick sort (K, j+1, UB);
end;
5 return
Dĩ nhiên để sắp xếp dãy khóa K với n phần tử thì phải thực hiện lời gọi
Call quick- sort (k, l, n);
Việc xây dựng thủ tục PART sẽ được dựa trên kĩ thuật sau:
Người ta đưa them vào 1 giá trị khóa giả K(n+1), lớn hơn mọi giá trị khóa trongdãy khóa cho Nó sẽ đóng vai trò như 1 lính gác (ta sẽ gọi là “khóa gác biên”) để khốngchế biên trên, giúp cho việc xử lý được thuận lợi Quá trình tìm số nhỏ hơn chốt đểchuyển về phía trước chốt và khóa lớn hơn chốt để chuyển về phía sau chốt sẽ dựa vào
2 biến chỉ số j và j để duyệt qua dãy khóa theo chiều ngược nhau
Thoạt đầu I lấy giá trị của LB+1 (vì K[LB] đã được chọn làm chốt rồi) còn j lấygiá trị của UB
I sẽ được tăng giá trị lên 1chừng nào mà K[i] còn bé hơn “chốt”, cho tới khi k[i]lớn hơn chốt thì thôi Tiếp đó j bắt đầu được giảm giá trị, chừng nào mà k[j] còn lớnhơn chốt, cho tới khi k[j] bé hơn chốt Nếu lúc đó i<j thì K[i] và K[j] được đổi chỗ chonhau Cồn việc lại được tiếp tục theo cách tương tự Cho tới khi i>j thì lúc đó K[j] vàkhóa chốt sẽ đổi chỗ cho nhau và quá trình phân đoạn cũng kết thúc
Lượt phân đoạn đầu tiên của dãy khóa cho ở trên
Trang 14Trong trường hợp mà tất cả các phần tử của dãy đang xét đều nhỏ hơn a, khi thực hiệncâu lệnh while ở bước 3 I cứ tăng lên, nhưng nó sẽ dừng lại khi gặp khóa gác biên,nghĩa là lúc i = UB +1 còn j thì vẫn giữ giá trị là UB vì K[j] lúc đó đã bé hơn khóachốt rồi Lúc này khóa chốt sẽ được đổi chỗ với K[j], a sẽ được đưa về cuối dãy, đúngvới vị trí của nó trong sắp xếp.
LB j=UB, i=UB+1
Trong trường hợp tất cả các phần tử của dãy đang xét đều lớn hơn a thì i vẫn giữnguyên giá trị LB +1, còn j thì giảm và dừng lại ở giá trị LB vì lúc đó K[j] = K[LB],điều kiện để thoát ra khỏi vòng while ngoài cùng ở bước, đồng thời i> j nên cũng thoátkhỏi vòng while ngoài cùng ở bước 2 và bước 6 được thực hiện, nghĩa là a vẫn ở vị trí
cũ, đúng với vị trí của nó trong sắp xếp
Qua đây ta cũng thấy do việc chọn chốt là khóa đầu tiên nên K[LB] đã đóng vai trògác biên dưới con K[UB+1] được đưa vào để gác biên trên, giúp cho việc kết thúc thựchiện thủ tục PART
Với hai trường hợp nói trên, sau khi thực hiện thủ tục PART ta đã không tách đượcdãy khóa thành 2 phân đoạn con, mà chỉ được 1 thôi Nếu đối với các phân đoạn sau lạigặp tình huống tương tự như vậy (chẳng hạn ta thực hiện Quick sort với 1 dãy khóa Kvốn đã có thứ tự tăng dần hoặc giảm dần rồi) thì thời gian thực hiện giải thuật sẽ chẳngkhác gì thời gian như đối với Bubble sort cả Đây chính là trường hợp bất lợi nhất đốivới quick sort
Bảng cho kết quả của sắp xếp theo Quick sort sau từng lượt với ví dụ nêu trên
a > a
< a a
Trang 151.5.1 Giới thiệu và khái niệm
Sắp xếp kiểu phân đoạn đã cho ta thời gian thực hiện trung bình khá tốt, nhưngtrường hợp xấu của nó là O(n2)
Phương pháp này sẽ đảm bảo được đảm bao cho cả chi phí thời gian đều cùng làO(nlog2n)
Với phương pháp này, thì bảng khóa cho ta cấu trúc cây nhị phân hoàn chỉnh và đượclưu trữ kế tiếp trong máy
Cấu trúc được sử dụng trong phương pháp này là cấu trúc đống Vậy đống là gì?
Đống là cây nhị phân hoàn chỉnh mà mỗi nút được gán một giá trị khóa sao chokhóa ở nút cha bao giờ cũng lớn hơn khóa ở nút con
Đống được lưu trữ trong máy bởi 1 vecto K mà K[i] thì lưu trữ giá trị khóa ở nút thứ
i trên cây nhị phân hoàn chỉnh (theo cách đánh số thứ tự lưu trữ kế tiếp)
Sắp xếp kiểu vun đống là một cải tiến của phương pháp sắp xếp kiểu lựa chọn.Tuy nhiên để chọn ra số lớn nhất, ở đây người ta đã dựa vào cấu trúc đống và để xắpxếp theo thứ tự tăng dần của các giá trị khóa là số, như ta đã qui ước, thì khóa lớn nhất
sẽ được xếp vào cuối dãy, nghĩa là nó được đổi chỗ với khóa đang ở đáy đống, và sauphép đổi chỗ này một khóa trong dãy đã vào đúng vị trí của nó trong sắp xếp Nếukhông kể tới khóa này thì phần còn lại của dãy khóa ứng với một cây nhị phân hoàn
Trang 169610
10
98
42
3
73
14
là một nút thì các khóa đã được xếp vào đúng vị trí của nó trong sắp xếp
Trang 17Ta thấy ngay rằng: Nếu ta có 1 đống thì giá trị các khóa ở nút gốc ( đỉnh gốc- đượcđánh số 1) chính là giá trị khóa lớn nhất trong dãy với đống đó.
Từ đó có thể hiểu: việc chọn ra khóa lớn nhất trong dãy khóa sẽ cho thuật lợi hơnnếu ta tạo được ra một đống ứng với dãy khóa này
Ta đã biết một cây nhị phân hoàn chỉnh thường được biểu diễn trong máy dưới dạngmột vecto
Vậy thì ngược lại một vecto biểu diễn một dãy giá trị khóa trong máy cũng có thểcoi như dạng biểu diễn của một cây nhị phân hoàn chỉnh mà mỗi nút có gắn một giá trịkhóa tương ứng của dãy Dĩ nhiên là cây này có thể chưa phải là đống
1.5.3 Thuật toán
Procedure ADJUST (i,n);
Ở đây vectơ K với n phần tử được coi như vecto lưu trữ của một cây nhị phân hoànchỉnh có n nút
1 KEY :=K[i]; {KEY nhận giá trị khóa ở nút gốc i}
j := 2*i; { j ghi nhận số thứ tự nút con trái của nút i}
2 while j<= n do begin
3 if j < n and K[j] < K[j+1] then j:= j+1;
{ Nếu khóa con phải lớn hơn thì j ghi nhận số thứ tự của nó}
4 if KEY > K[j] then begin
K[j/2] := KEY;
Return
End; {đây là trường hợp khóa cha lớn hơn khóa con}
5 K[j/2] := K[j]; {đưa khóa con lớn lên}
j:= 2*j
end;
6 K[j/2] := KEY;
7 return
Trang 18Với giải thuật ADJUST này, việc tạo thành đống cho cây nhị phân hoàn chỉnh có nnút sẽ được thực hiện bởi:
for i := [n/2] down to 1 do call ADJUST(i,n);
Như vậy sắp xếp kiểu vun đống bao gồm 2 giai đoạn:
1 Giai đoạn tạo đống ban đầu
2 Giai đoạn sắp xếp, bao gồm 2 bước:
Thủ tục sắp xếp kiểu vun đống được thể hiện bởi giải thuật sau:
2 {Tạo đống ban đầu}
For i:= [n/2] down to 1 do
Call ADJUST (i,n);
Trang 19Ở đây do so phần tử dữ liệu thường lớn nên một phần dữ liệu cần sắp xếp được đưa
vào trong bộ nhớ trong (RAM), phần còn lại được lưu trữ ở bộ nhớ ngoài (DISK) Dovậy tốc độ sắp xếp dữ liệu trên tập tin tương đối chậm Các giải thuật sắp xếp ngoạibao gồm các nhom sau:
- Sắp xếp bằng phương pháp trộn (merge sort)
- Sắp xếp theo chỉ mục (index sort)
Như vậy, trong phần này chúng ta tìm cách sắp xếp tập tin F có N phần tử dữ liệu cókiểu T (khóa nhận diện các phần tử dữ liệu có kiểu T) theo thứ tự tăng
2.1 Sắp xếp bằng phương pháp trộn (merge sort)
Trong khoa học máy tính, sắp xếp trộn (merge sort) là một thuật toán sắp xếp để
sắp xếp các danh sách (hoặc bất kỳ cấu trúc dữ liệu nào có thể truy cập tuần tự, v.d.luồng tập tin) theo một trật tự nào đó Thuật toán này là một ví dụ tương đối điển hìnhcủa lối thuật toán chia để trị Nó được xếp vào thể loại sắp xếp so sánh
Giả sử có hai danh sách đã được sắp xếp a[1 m] và b[1 n.] Ta có thể trộn chúng lại thành một danh sách mới c[1 m + n] được sắp xếp theo cách sau:
So sánh hai phần tử đứng đầu của hai danh sách, lấy phần tử nhỏ hơn cho vào danhsách mới Tiếp tục như vậy cho tới khi một trong hai danh sách là rỗng
Khi một trong hai danh sách là rỗng ta lấy phần còn lại của danh sách kia cho vàocuối danh sách mới
Ví dụ: Cho hai danh sách a = (1,3,7,9),b = (2,6), quá trình hòa nhập diễn ra như sau:
Danh sách a Danh sách b So sánh Danh sách c
Trang 20• Bước 2: Tách dãy a[0], a[1],…,a[n-1] thành hai dãy b,c theo nguyên tắc luân phiên từng nhóm k phần tử:
b={ a[0], a[1],…, a[k-1] ; a[2k],… ,a[3k-1] ;…}
c={ a[k], a[k+1],…,a[2k-1] ; a[3k],….,a[4k-1] ;…}
• Bước 3: Trộn từng cặp dãy con của hai dãy b,c vào a theo nguyên tắc phần tử nhỏ xếp trước
• Bước 4: Cho k=k*2
• Bước 5: Nếu k<n thì lặp lại bước 2, ngược lại thì dừng
*Cài đặt thuật toán:
Void Merge sort()
{ int p,pb,pc; int i,k=1;
do { p=pb=pc=0;
while (p<n) { for (i=0;(p<n)&&(i<k);i++)
b[pb++]=a[p++];
for (i=0;(p<n)&&(i<k);i++) c[pc++]=a[p++]; };
Merge(a,pb,pc,k);
k*=2;
} while ( k<n );
}
void Merge (int a[], int nb, int nc, int k)
{ int p, pb, pc, ib, ic, kb, kc;
Trang 212.2 Sắp xếp theo chỉ mục (Index Sort)
Thông thường kích thước của các phân tử dữ liệu trên tập tin dữ lieu khá lớn và kíchthước của tập tin dữ liệu cũng khá lớn Vả lại biến động dữ liệu trên tập tin dữ liệu ítliên tục mà chủ yếu là chúng ta truy xuất dữ liệu thường xuyên Do vậy, việc đọc-ghinhiều lên tập tin dữ liệu sẽ làm cho thời gian truy xuất tập tin dữ liệ rất mất thời gian vàkhông đảm bảo an toàn cho dữ liệu Để giải quyết vấn đề này chúng ta tiến hành thao
Trang 22tác tập tin dữ liệu thông qua một tập tin tuần tự chỉ mục theo khóa nhận diện của cácphần tử dữ liệu.
* Tư tưởng:
Từ tập tin dữ liệu ban đầu, chúng ta tiến hành tạo tập tin chỉ mục theo khoá nhận diệncủa các phần tử dữ liệu (Tập tin chỉ mục được sắp xếp tăng theo khóa nhận diện củacác phần tử dữ liệu) Trên cơ sở truy xuất lần lượt các phần tử trong tập tin chỉ mụcchúng ta sẽ điều khiển trật tự xuất hiện của các phần tử dữ liệu trong tập tin dữ liệutheo đúng trật tự trên tập tin chỉ mục Nhờ vậy trong thực tiễn, tập tin dữ liệu không bịthay đổi thứ tự vật lý ban đầu trên đĩa mà chỉ bị thay đổi trật tự xuất hiện các phần tử
dữ liệu khi được liệt kê ra màn hình, máy in, …
Về cấu trúc các phần tử trong tập tin chỉ mục như đã trình bày Ở đây chúng ta chỉ trình bày cách tạo tập tin chỉ mục theo khóa nhận diện từ tập tin dữ liệu ban đầu và cách thức mà tập tin chỉ mục sẽ điều khiển thứ tự xuất hiện của các phần tử dữ liệu trêntập tin dữ liệu Hai thao tác này sẽ được trình bày riêng thành 2 thuật toán;
- Thuật toán tạo tập tin chỉ mục
- Thuật toán điều khiển thứ tự xuất hiện các phần tử dữ liệu dựa trên tập tin chỉ mục
* Thuật toán:
- Thuật toán tạo tập tin chỉ mục:
B1: Fd = open(DataFile, “r”) //Mở tập tin dữ liệu để đọc dữ liệu
B2: Fidx = open(IdxFile, “w”) // Mở để tạo mới tập tin chỉ mục
Trang 23B2: Fidx = open(IdxFile, “r”) // Mở tập tin chỉ mục để đọc
B3: read (Fidx, ai)
* Cài đặt thuật toán:
Hàm CreateIndex thực hiện việc tạo tập tin chỉ mục từ tập tin dữ liệu và sắp xếp các phần tử trong tập tin chỉ mục theo thứ tự tăng theo khóa nhận diện Nếu việc tạo tập tinchỉ mục thành công hàm trả về giá trị 1, ngược lại hàm trả về giá trị -1
Hàm CreateIndex có prototype như sau:
int CreateIndex (char * DataFile, char * IdxFile);
Nội dung của hàm CreateIndex:
Trang 24int CreateIndex (char * DataFile, char * IdxFile)
{ FILE * Fd = fopen (DataFile, “rb”);
int SOT = sizeof(DataType);
int SOI = sizeof(IdxType);
if (fwrite (&ai, SOI, 1, Fidx) < 1)
return (Finished (Fd, Fidx, -1));
Trang 25Hàm DisplayData thự hiện điều khiển thứ tự xuất hiện các phần tử dữ liệu trên tập tin
dữ liệu dựa trên tập tin chỉ mục đã được tạo Nếu việc liệt kê thành công, hàm trả về giá trị 1, ngược lại hàm trả về giá trị -1 Hàm DisplayData có prototype như sau:
int DisplayData (char * DataFile, char * IdxFile);
Nội dung của hàm DisplayData:
int DisplayData (char * DataFile, char * IdxFile)
{ FILE * Fd = fopen (DataFile, “rb”);
int SOT = sizeof(DataType);
int SOI = sizeof(IdxType);
while (!feof(Fidx))
{ if (fread (&ai, SOI, 1, Fidx) < 1)
{ if (feof(Fidx))
return (Finished (Fd, Fidx, 1));
return (Finished (Fd, Fidx, -1));
Trang 26fseek(Fd, ai.Pos, SEEK_SET);
if (fread (&a, SOT, 1, Fd) < 1)
return (Finished (Fd, Fidx, -1));
Output(a);
}
return (Finished (Fd, Fidx, 1));
}
Trang 27TỔNG QUAN MẠNG MÁY TÍNH
1 Định nghĩa
Mạng máy tính là một nhóm các máy tính và thiết bị ngoại vi kết nối với nhau thông qua các phương tiện truyền dẫn như cáp xoắn,cáp quang, sóng điện từ,tia hồng ngoại… để chia sẻ dữ liệu cho nhau Dữ liệu truyền từ máy này sang máy khác đều là các bit nhị phân 0 và 1, sau khi biến đổi thành điện thế hoặc sóng điện từ,sẽ được truyền qua môi trường truyền dẫn bên dưới
Hình 2.1: Một mô hình liên kết các máy tính trong mạng
Với sự trao đổi qua lại giữa máy tính này với máy tính khác đã phân biệt mạng máytính với các hệ thống thu phát một chiều như truyền hình, phát thông tin từ vệ tinh xuống các trạm thu thụ động vì tại đây chỉ có thông tin một chiều từ nơi phát đến nơi thu mà không quan tâm đến có bao nhiêu nơi thu, có thu tốt hay không
Mạng máy tính ra đời xuất phát từ nhu cầu muốn chia sẻ và dùng chung dữ liệu.Không có hệ thống mạng thì dữ liệu trên các máy tính độc lập muốn chia sẻ với nhauphải thông qua việc in ấn hay sao chép qua đĩa mềm, CD ROM, … điều này gây rất
Trang 28nhiều bất tiện cho người dùng Các máy tính được kết nối thành mạng cho phép cáckhả năng:
• Sử dụng chung các công cụ tiện ích
• Chia sẻ kho dữ liệu dùng chung
• Tăng độ tin cậy của hệ thống
• Trao đổi thông điệp, hình ảnh,
• Dùng chung các thiết bị ngoại vi (máy in, máyvẽ, Fax, modem …)
• Giảm thiểu chi phí và thời gian đi lại
2 Các loại mạng máy tính
2.1 Mạng cục bộ LAN (Local Area Network)
Mạng LAN là một nhóm máy tính các thiết bị truyền thông mạng được kết nối vớinhau trong một khu vực nhỏ như một tòa nhà cao ốc, khuôn viên trường đại học, khugiải trí…
Các mạng LAN thường có đặc điểm sau:
- Băng thông lớn có khả năng chạy những ứng dụng trực tuyến như xem phim, hộithảo qua mạng
- Kích thước mạng bị giới hạn bởi các thiết bị
- Chi phí các thiết bị mạng LAN tương đối rẻ
- Quản trị đơn giản
Trang 29
Hình 1.1 Mô hình mạng cuc bộ (LAN)
2.2 Mạng đô thị MAN (Metropolitan Area Network)
Mạng MAN gần giống như mạng LAN nhưng giới hạn của nó là một thành phố haymột quốc gia Mạng MAN kết nối các mạng LAN lại với nhau thông qua các phươngtiện truyền dẫn khác nhau (cáp quang , cáp đồng, sóng…)và các ơh]ơng thức truyềnthông khác nhau
Đặc điểm của mạng MAN:
- Băng thông mức trung bình, đủ để phục vụ các ứng dụng cáp thành phố hay quốcgia như chính phủ điện tử, thương mại điện tử, các ứng dụng của ngân hàng…
- Do MAN kết nối nhiều LAN với nhau lên độ phức tạp cũng tăng đồng thời côngtác quản trị sẽ khó khăn hơn
- Chi phí các thiết bị mạng MAN tương đối đắt tiền
2.3 Mạng diện rộng WAN (Wide Area Network)
Mạng WAN bao phủ vùng địa lý rộng lớn có thể là một quốc gia, một lục địa haytoàn cầu Mạng WAN thường là mạng của các công ty đa quốc gia hay toàn cầu, điểnhình là mạng Internet Do phạm vi rộng lớn của mạng WAN lên thông thường mạng
Trang 30WAN là tập hợp các mạng LAN, MAN nối lại với nhau bằng các phương tiện như: vệtinh (satellites), sóng viba (microwave), cáp quang , cáp điện thoại…
Đặc điểm của mạng WAN:
- Băng thông thấp, dễ mất kết nối, thường chỉ phù hợp với các ứng dụng offline nhưemail, web, ftp…
- Phạm vi hoạt động rộng lớn không giới hạn
- Do kết nối nhiều LAN,MAN lại với nhau nên mạng rất phức tạp và có tính toàncầu nên thường là có tổ chức quốc tế đứng ra quản trị
- Chi phí cho các thiết bị và các thiết bị mạng WAN rất đắt tiền
Trang 31Topology của mạng là cấu trúc hình học không gian mà thực chất là cách bố tríphần tử của mạng cũng như cách nối giữa chúng với nhau Thông thường mạng có 3dạng cấu trúc là: Mạng dạng hình sao (Star Topology), mạng dạng vòng (Ring
Topology) và mạng dạng tuyến (Linear Bus Topology) Ngoài 3 dạng cấu hình kể trên
còn có một số dạng khác biến tướng từ 3 dạng này như mạng phân cấp, mạng fullmesh, mạng partial mesh…
3.1.1Mạng dạng hình sao (Star topology)
Hình 1.1 Mạng hình sao
Mạng dạng hình sao bao gồm một trung tâm và các nút thông tin Các nút thôngtin là các trạm đầu cuối, các máy tính và các thiết bị khác của mạng Trung tâm củamạng điều phối mọi hoạt động trong mạng với các chức nǎng cơ bản là:
-Xác định cặp địa chỉ gửi và nhận được phép chiếm tuyến thông tin và liên lạcvới nhau
-Cho phép theo dõi và sử lý sai trong quá trình trao đổi thông tin
-Thông báo các trạng thái của mạng
Trang 32-Mạng có thể mở rộng hoặc thu hẹp tuỳ theo yêu cầu của người sử dụng
3.1.2 Mạng hình tuyến (Bus Topology)
Ư u điểm:
Loại hình mạng này dùng dây cáp ít nhất, dễ lắp đặt, giá thành rẻ
Trang 33Nhược điểm:
− Sự ùn tắc giao thông khi di chuyển dữ liệu với lưu lượng lớn
− Khi có sự hỏng hóc ở đoạn nào đó thì rất khó phát hiện, một sự ngừng trênđường dây để sửa chữa sẽ ngừng toàn bộ hệ thống Cấu trúc này ngày nay ítđược sử dụng
3.1.3 Mạng hình bus
Hình 1.3 Mạng hình bus
Theo cách bố trí hành lang các đường như hình vẽ thì máy chủ (host) cũng như tất
cả các máy tính khác (workstation) hoặc các nút (node) đều được nối về với nhau trênmột trục đường dây cáp chính để chuyển tải tín hiệu
Tất cả các nút đều sử dụng chung đường dây cáp chính này Phía hai đầu dây cápđược bịt bởi một thiết bị gọi là terminator Các tín hiệu và gói dữ liệu (packet) khi dichuyển lên hoặc xuống trong dây cáp đều mang theo điạ chỉ của nơi đến
Trang 34-Khi một trạm trên đường truyền bị hỏng thì các trạm khác cũng phải ngừnghoạt động.
Ưu điểm:
-Mạng dạng vòng có thuận lợi là có thể nới rộng ra xa, tổng đường dây cần thiết
ít hơn so với hai kiểu trên
Nhược điểm:
-Đường dây phải khép kín, nếu bị ngắt ở một nơi nào đó thì toàn bộ hệ thốngcũng bị ngừng
Trang 353.1.5 Mạng dạng kết hợp
Hình1.4 Mạng dạng kết hợp
3.1.5.1 Kết hợp hình sao và tuyến (star/Bus Topology)
Cấu hình mạng dạng này có bộ phận tách tín hiệu (spitter) giữ vai trò thiết bị trungtâm, hệ thống dây cáp mạng có thể chọn Ring Topology hoặc Linear Bus Topology
Ưu điểm của cấu hình này là mạng có thể gồm nhiều nhóm làm việc ở cách xa nhau,ARCNET là mạng dạng kết hợp Star/Bus Topology Cấu hình dạng này đưa lại sựuyển chuyển trong việc bố trí đường dây tương thích dễ dàng đối với bất cứ toà nhànào
Trang 363.1.5.2 Kết hợp hình sao và vòng (Star/Ring Topology)
Cấu hình dạng kết hợp Star/Ring Topology, có một "thẻ bài" liên lạc (Token) đượcchuyển vòng quanh một cái HUB trung tâm Mỗi trạm làm việc (workstation) được nốivới HUB - là cầu nối giữa các trạm làm việc và để tǎng khoảng cách cần thiết
Để đánh giá khả nǎng của một mạng được phân chia bởi các trạm như thế nào
Hệ số này được quyết định chủ yếu bởi hiệu quả sử dụng môi trường truy xuất(medium access) của giao thức, môi trường này ở dạng tuyến tính hoặc vòng Mộttrong các giao thức được sử dụng nhiều trong các LAN
Trang 373.2.1 Giao thức CSMA/CD (Carries Sense Multiple Access/Collision Detect)
Sử dụng giao thức này các trạm hoàn toàn có quyền truyền dữ liệu trên mạng với
số lượng nhiều hay ít một cách ngẫu nhiên hoặc bất kỳ khi nào có nhu cầu truyền dữliệu ở mỗi trạm Mối trạm sẽ kiểm tra tuyến và chỉ khi nào tuyến không bận mới bắtđầu truyền các gói dữ liệu
CSMA/CD có nguồn gốc từ hệ thống radio đã phát triển ở trường đại học Hawaivào khoảng nǎm 1970, gọi là ALOHANET
Ưu điểm của CSMA/CD là đơn giản, mềm dẻo, hiệu quả truyền thông tin caokhi lưu lượng thông tin của mạng thấp và có tính đột biến Việc thêm vào hay dịchchuyển các trạm trên tuyến không ảnh hưởng đến các thủ tục của giao thức
Nhược điểm
Điểm bất lợi của CSMA/CD là hiệu suất của tuyến giảm xuống nhanh chóngkhi phải tải quá nhiều thông tin
3.2.2 Token passing protocol
Đây là giao thức thông dụng sau CSMA/CD được dùng trong các LAN có cấutrúc vòng (Ring) Trong phương pháp này, khối điều khiển mạng hoặc token đượctruyền lần lượt từ trạm này đến trạm khác Token là một khối dữ liệu đặc biệt Khimột trạm đang chiếm token thì nó có thể phát đi một gói dữ liệu Khi đã phát hếtgói dữ liệu cho phép hoặc không còn gì để phát nữa thì trạm đó lại gửi token sangtrạm kế tiếp có mức ưu tiên cao nhất
Trong token có chứa một địa chỉ đích và được luân chuyển tới các trạm theomột trật tự đã định trước Đối với cấu hình mạng dạng xoay vòng thì trật tự của sựtruyền token tương đương với trật tự vật lý của các trạm xung quanh vòng
Giao thức truyền token có trật tự hơn nhưng cũng phức tạp hơn CSMA/CD, có
ưu điểm là vẫn hoạt động tốt khi lưu lượng truyền thông lớn Giao thức truyềntoken tuân thủ đúng sự phân chia của môi trường mạng, hoạt động dựa vào sự xoayvòng tới các trạm Việc truyền token sẽ không thực hiện được nếu việc xoay vòng
Trang 38bị đứt đoạn Giao thức phải chứa các thủ tục kiểm tra token để cho phép khôi phụclại token bị mất hoặc thay thế trạng thái của token và cung cấp các phương tiện đểsửa đổi logic (thêm vào, bớt đi hoặc định lại trật tự của các trạm)
−Đây là bộ giao thức sử dụng trong mạng Novell
−Ưu thế: nhỏ, nhanh và hiệu quả trên các mạng cục bộ đồng thời hỗ trợ khảnăng định tuyến
3.3.4 DECnet
−Đây là bộ giao thức độc quyền của hãng Digital Equipment Corporation − DECnet định nghĩa mô hình truyền thông qua mạng LAN, mạng MAN vàWAN Hỗ trợ khả năng định tuyến
3.4 Bộ giao thức TCP/IP(TCP/IP - Transmission Control Protocol/ Internet Protocol )
3.4.1 Tổng quan về bộ giao thức TCP/IP
TCP/IP là b ộ giao thức cho phép kết nối các hệ thống mạng không đồng nhất vớinhau Ngày nay, TCP/IP được sử dụng rộng rãi trong các mạng cục bộ cũng như
Trang 39trên mạng Internet toàn cầu TCP/IP được xem là giản lược của mô hình tham chiếuOSI với bốn tầng như sau:
− Tầng liên kết mạng (Network Access Layer)
− Tầng Internet (Internet Layer)
− Tầng giao vận (Host-to-Host Transport Layer)
lý qua thiết bị giao tiếp mạng đó
3.4.1.2 Tầng Internet
Tầng Internet (còn gọi là tầng mạng) xử lý qua trình truyền gói tin trên mạng Cácgiao thức của tầng này bao gồm: IP (Internet Protocol), ICMP (Internet ControlMessage Protocol), IGMP (Internet Group Messages Protocol)
3.4.1.3 Tầng giao vận
Tầng giao vận phụ trách luồng dữ liệu giữa hai trạm thực hiện các ứng dụng củatầng trên Tầng này có hai giao thức chính: TCP (Transmission Control Protocol) và
Trang 40UDP (User Datagram Protocol) TCP cung cấp một luồng dữ liệu tin cậy giữa hai trạm,
nó sử dụng các cơ chế như chia nhỏ các gói tin của tầng trên thành các gói tin có kíchthước thích hợp cho tầng mạng bên dưới, báo nhận gói tin,đặt hạn chế thời gian time-out để đảm bảo bên nhận biết được các gói tin đã gửi đi Do tầng này đảm bảo tính tincậy, tầng trên sẽ không cần quan tâm đến nữa UDP cung cấp một dịch vụ đơn giản
hơn cho tầng ứng dụng Nó chỉ gửi các gói dữ liệu từ trạm này tới trạm kia mà không
đảm bảo các gói tin đến được tới đích Các cơ chế đảm bảo độ tin cậy cần được thựchiện bởi tầng trên
3.4.1.4 Tầng ứng dụng
Tầng ứng dụng là tầng trên cùng của mô hình TCP/IP bao gồm các tiến trình và cácứng dụng cung cấp cho người sử dụng để truy cập mạng Có rất nhiều ứng dụng đượccung cấp trong tầng này, mà phổ biến là: Telnet: sử dụng trong việc truy cập mạng từ
xa, FTP (File Transfer Protocol): dịch vụ truyền tệp, Email: dịch vụ thư tín điện tử,WWW (World Wide Web)
Hình 1-6: Quá trình đóng/mở gói dữ liệu trong TCP/IP