Viết một đoạn khoảng 300 từ giới thiệu về ứng dụng của Toán rời rạc trong ngành Kỹ thuật phần mềm.Toán rời rạc là môn cơ sở ngành của đại đa số những sinh viên có liên quan đến Công nghệ
Trang 1KHOA KỸ THUẬT CƠ – ĐIN V MY TNH
- □ □ -
BI TẬP LỚN CUỐI KỲ
HỌC PHẦN: TON RỜI RẠC
Mã Học Phần: 221_71SEDM30013_02
H Ch" Minh, tháng 11 năm 2022
Trang 2BI TẬP LỚN CUỐI KỲ
BI 1 (1,0 điểm) Viết một đoạn khoảng 300 từ giới thiệu
về ứng dụng của Toán rời rạc trong ngành Kỹ thuật phần mềm
Toán rời rạc là môn cơ sở ngành của đại đa số những sinh viên có liên quan đến Công nghệ thông tin Vì thế, đây là một môn đặc biệt cần thiết đối với bất kì những ai theo học ngành IT Toán rời rạc cung cấp cho nhiều người có kiến thức cơ bản về cấu trúc và
lý thuyết đồ thị cũng như những ứng dụng của chúng vào một số bài toán, tình huống cụ thể như (lên lịch làm việc, xếp cặp, ) Ngoài ra lý thuyết đồ thị giúp bạn tạo ra mạng và truyền thông tin đồng thời giải được nhiều bài toán liên quan chẳng hạn như là giải thuật BFS cũng thường được thấy trong những rounter nhằm xác định lối đi tối ưu nhất Bên cạnh đó, cây thì nhờ vậy mà có phép huffman và nén thông tin hoặc giúp cây điều khiển, xây dựng chiến thuật min-max được ứng dụng trong trí tuệ nhân tạo nhằm xử lý các bài toán về trò chơi như là cờ và số học Xây dựng hệ cây tiền tố, hậu tố để máy tính hiểu và có thể tính toán các phép tính thông thường
+ Lý thuyết quan hệ và đại số quan hệ giúp con người thiết lập hệ quản trị cơ sở dữ liệu
+ Giúp hiểu biết sâu hơn về các giải thuật, cấu trúc dữ liệu + Học về độ thay đổi của hàm giúp ta hiểu thuật toán và từ
đó có thể chọn được các thuật toán phù hợp
+ Lý thuyết này có nhiều ứng dụng trong Cyptography Thậm chí toán rời rạc có thể giúp con người học cách thức xử lý của máy tính khi xử lý từng con số rời rạc đó
Trang 3Thuật Toán:
Procedure Tinh:
For i in listnhap:
Tong += i
Print(“Tổng dãy số là: ”, Tong)
Chương Trình:
print ( "Viết hàm tính tổng các số nguyên trong một danh sách" )
print ( 'Nhập vào dãy các số cách nhau bởi khoảng trắng:' )
dayGiaTri = input ()
danhSachGiaTri = dayGiaTri.split()
tongDaySo = 0
try :
for i in danhSachGiaTri:
tongDaySo += int (i)
print ( "Tổng của dãy số này là:" , str (tongDaySo))
except :
print ( "Giá Trị Không Hợp Lệ" )
Kết Quả:
Câu 3: Viết chương trình sắp xếp kiểu nổi bọt cho dãy: 16,
2,13, 1, 5, 4, 9, 7, 2, 4, 15, 17, 21, 24, 26, 28, 31, 33, 35, 37, 39
Thuật Toán:
Procedure Bubble_Sort():
For i:= 1 to n-1
For j := 1 to n – i
If a(j) > a(j + 1) then đổi vị trí a(j) và a(j +1)
Print( kết quả )
Chương Trình:
defbubbleSort(listnhap):
n = len(listnhap)
for i in range(n-1):
Trang 4for j in range(0, n-i-1):
listnhap[j] > listnhap[j + 1] :if
listnhap[j], listnhap[j + 1]=listnhap[j + 1], listnhap[j] listnhap = [16, 2,13, 1, 5, 4, 9, 7, 2,4, 15, 17, 21, 24, 26, 28, 31,
33, 35, 37, 39]
print("List ban đầu có giá trị là: ")
print(listnhap)
print("Sau khi sắp xếp là: ")
bubbleSort(listnhap)
for i in range len( (listnhap)):
print("%d" % listnhap[i], end= )" "
Kết Quả:
BI 4 (1,0 điểm) Tìm số đỉnh, số cạnh bậc ra và bậc vào
của mỗi đỉnh trong các đồ thị sau:
deg(a) = 4 deg (a) = 3 deg (a) =+ 1
deg(b) = 3 deg (b) = 1 deg (b) =+ 2 deg(c) = 3
deg (c) = 2 deg (c) =+ 1
deg(d) = 4 deg (d) = 1 deg (d) =+ 3
Trang 5
-deg(a) = 4 deg (a) = 2 deg (a) =+ 2
deg(b) = 7 deg (b) = 3 deg (b) =+ 4
deg(c) = 3 deg (c) = 2 deg (c) =+ 1
deg(d) = 2 deg (d) = 1 deg (d) =+ 1
-deg(a) = 7 deg (a) = 6 deg (a) =+ 1
deg(b) = 6 deg (b) = 1 deg (b) =+ 5 deg(c) = 7
deg (c) = 2 deg (c) =+ 5
deg(d) = 6 deg (d) = 4 deg (d) =+ 2 deg(e) = 0
deg-(e) = 0 deg+(e) = 0
BI 5 (1,0 điểm) Tìm ma trận kề của các đồ thị sau:
Trang 6Lời giải:
Lời giải:
BI 6 (1 điểm) Hãy vẽ đồ thị tương ứng với các ma trận kề
sau:
a)
Hnh 1: Đồ thị ma trận kề a
Trang 7Hnh 2: Đồ thị ma trận kề b
BI 7 (1 điểm) Xác định đồ thị sau có chu trình Euler hay
không, nếu có hãy xây dựng chu trình Nếu không hãy xác định đồ thị đó có đường Euler hay không và xác định nó:
Đồ thị 9 có chu trình Euler: Chu trình Euler là : {a, d, e, c, b, e, b ,d , b, a}
Trang 8Đồ thị 10 có đường đi Đường đi là {a ,d ,e , d, b, a, e, b,e, c , b, c
,e}
Đồ thị 11 không có chu trình Euler và đường đi
BI 8 (1,0 điểm): Tìm đường đi ngắn nhất giữa a và z của
các đồ thị trọng số như sau:
Trang 9u S U ∉ S a b c d e z
La(a) =
Lb(b) =
Le(e) =
Ld(d) =
Lz(z) =
7
a, b,
e, d,
Bảng 1: Đường đi ngắn nhất đồ thị 12
- Vậy đường đi ngắn nhất là: a ➜ b ➜ e ➜ d ➜ z = 7
Trang 10Bảng 2: Đường đi ngắn nhất đồ thị 13
- Vậy đường đi ngắn nhất là: a ➜ c ➜ d ➜ e ➜ g ➜ z = 16
BI 9 (1,0 điểm): Viết chương trình duyệt cây theo Tiền tự,
trung tự và hậu tự cho các cây sau:
a)
Chương Trình:
class Node :
def init (self,key):
Trang 11print (root.val),
printInorder (root.left)
printInorder (root.right)
def printPostorder (root):
root: if
print (root.val)
printPostorder (root.left)
printPostorder (root.right)
def printPreoder (root):
root: if
print (root.val),
printPreoder (root.left)
printPreoder (root.right)
print ( 'Cay 1' )
root = Node ( ) 'a'
root.left = Node ( ) 'b'
root.right = Node ( ) 'c'
root.left.left = Node ( ) 'd'
root.left.right = Node ( ) 'e'
root.right.left = Node ( ) 'f'
root.right.right = Node ( 'g h' )
root.left.right.left = Node ( ) 'i'
root.left.right.right = Node ( ) 'j'
root.right.right.left = Node ( ) 'k'
root.right.right.right = Node ( ) 'l'
root.left.right.right.left = Node ( 'm' )
root.left.right.right.right = Node ( 'n o' )
root.right.right.right.right = Node ( ) 'p'
print ( 'Preorder: Root, Left, Right' )
printPreoder (root)
print ( 'Inorder: Root, Left, Right' )
printInorder (root)
print ( 'Postorder: Root, Left, Right' )
printPostorder (root)
Kết quả:
Trang 12b)
Trang 13Chương Trình:
class Node :
def init (self,key):
self left = None
self right = None
self val= key
def printInorder (root):
root: if
print (root.val),
printInorder (root.left)
printInorder (root.right)
def printPostorder (root):
root: if
print (root.val)
printPostorder (root.left)
printPostorder (root.right)
def printPreoder (root):
root: if
print (root.val),
printPreoder (root.left)
printPreoder (root.right)
print ( 'Cay 2' )
root = Node ( ) 'a'
root.left = Node ( ) 'b'
root.left.left = Node ( ) 'e'
root.left.left.left = Node ( ) 'k'
root.left.left.right = Node ( 'l m' )
root.left.right = Node ( 'f g' )
root.left.right.right = Node ( ) 'n'
root.left.right.right.left = Node ( ) 'r'
root.left.right.right.right = Node ( ) 's'
root.right = Node ( 'c d' )
root.right.left = Node ( ) 'h'
root.right.left.left = Node ( ) 'o'
root.right.right = Node ( 'i j' )
root.right.right.left = Node ( ) 'p'
root.right.right.right = Node ( ) 'q'
print ( 'Preorder: Root, Left, Right' )
printPreoder (root)
print ( 'Inorder: Root, Left, Right' )
printInorder (root)
print ( 'Postorder: Root, Left, Right' )
printPostorder (root)
Kết quả:
Trang 14BÀI 10 (1,0 đi m) ể Vẽẽ s đồồ m ch cho các đầồu ra c a hàm Boolẽơ ạ ủ