Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Giải thuật ứng dụng trong kinh doanh: Cài đặt bằng ngôn ngữ lập trình Python (Tài liệu tham khảo) / Nguyễn Văn Thọ đcb
PREMIUM
Số trang
238
Kích thước
18.3 MB
Định dạng
PDF
Lượt xem
1729

Giải thuật ứng dụng trong kinh doanh: Cài đặt bằng ngôn ngữ lập trình Python (Tài liệu tham khảo) / Nguyễn Văn Thọ đcb

Nội dung xem thử

Mô tả chi tiết

``

LỜI GIỚI THIỆU

Giải thuật ứng dụng trong kinh doanh (Tiếng Anh: Applied Algorithms in

Business) là môn học thuộc chương trình đào tạo các ngành: Hệ thống thông tin quản

lý, Tài chính-ngân hàng, Quản trị kinh doanh...của trường Đại học Ngân hàng

TPHCM. Với mong muốn có một tài liệu cho các em sinh viên tham khảo trong quá

trình học tập, nhóm tác giả đã tâm huyết biên soạn tài liệu Giải thuật ứng dụng trong

kinh doanh. Tài liệu này thể hiện được tính ưu việt hơn so với các tài liệu hiện có trên

thị trường: (1)Nội dung được viết rất cô đọng và sát với đề cương môn học thuộc

chương trình đào tạo đã được Ban giám hiệu phê duyệt; (2)Cấu trúc được trình bày

theo hướng tóm tắt lý thuyết, cho ví dụ minh họa được cài đặt bằng ngôn ngữ Python,

hướng dẫn giải bài tập từng bước. Với mỗi ví dụ và bài tập đều in kết quả sau khi

chạy chương trình để sinh viên dễ dàng nắm bắt và thực hành. Cuối mỗi chương có

trình bày tóm tắt nội dung chương cùng với các câu hỏi ôn tập và các bài tập thực hành

có hướng dẫn chi tiết. Ngoài ra tài liệu còn có các bài tập đề nghị sinh viên tự giải

nhằm giúp các em nâng cao khả năng tự học; (3)Các bài tập tình huống và bài tập tự

rèn luyện ở mỗi chương được chọn lọc kỹ, đó là những bài toán rất thực tế và phổ

biến trong lĩnh vực kinh doanh mà các doanh nghiệp đang áp dụng; (4)Đính kèm theo

sách này là các tập tin mã nguồn của chương trình đã được viết hoàn chỉnh bằng ngôn

ngữ lập trình Python nhằm giúp người học dễ dàng theo dõi. Độc giả có thể tải các

tập tin mã nguồn tại địa chỉ sau:

https://www.mediafire.com/file/6f4c0leiokbaqaj/Code_GTUD.rar/file

Nội dung tài liệu được chia thành 7 chương:

Chương 1: Tổng quan

Chương 2: Đệ quy

Chương 3: Danh sách

Chương 4: Cây

Chương 5: Đồ thị

Chương 6: Sắp xếp và tìm kiếm

Chương 7: Bảng băm

Nhóm biên soạn chân thành cảm ơn sự hỗ trợ của lãnh đạo trường Đại học

Ngân hàng Tp. Hồ Chí Minh, cảm ơn các nhà khoa học đã có những đóng góp ý kiến

quý báu để nhóm hoàn thành tài liệu này.

Mặc dù nhóm tác giả đã cố gắng rất nhiều nhưng không tránh khỏi những thiếu

sót, rất mong nhận được ý kiến đóng góp quý báu của Quý độc giả, Quý thầy cô và

các em sinh viên để lần ấn bản sau được hoàn chỉnh hơn.

Mọi thắc mắc và đóng góp về tài liệu, Quý độc giả vui lòng gửi mail theo địa

chỉ: [email protected] hoặc [email protected]

Xin chân thành cảm ơn

Nhóm biên soạn

i

MỤC LỤC

CHƯƠNG 1. TỔNG QUAN................................................................................................1

Một số định nghĩa về cấu trúc dữ liệu và giải thuật ....................................................2

Định nghĩa giải thuật............................................................................................2

Giải thuật ứng dụng trong kinh doanh .................................................................2

Định nghĩa cấu trúc dữ liệu và cấu trúc lưu trữ....................................................2

Vai trò của tổ chức dữ liệu và mối quan hệ giữa cấu trúc dữ liệu và giải thuật...3

Các kiểu dữ liệu cơ bản ...............................................................................................4

Các kiểu dữ liệu có cấu trúc ........................................................................................6

Phân tích và thiết kế giải thuật ....................................................................................7

Phương pháp chia để trị (divide- and-conquer) ...................................................8

Phương pháp quy hoạch động............................................................................10

Phương pháp quay lui (backtracking) ................................................................10

Ký hiệu BigO (Big-Oh Notation)..............................................................................10

Giới thiệu về ngôn ngữ lập trình Python ...................................................................15

Một số câu hỏi và bài tập có lời giải..........................................................................16

Một số câu hỏi và bài tập tự rèn luyện ......................................................................17

CHƯƠNG 2. ĐỆ QUY.......................................................................................................18

Giới thiệu đệ quy .......................................................................................................19

Khái niệm:..........................................................................................................19

Giải thuật đệ quy và hàm đệ quy...............................................................................19

Cơ chế hoạt động của giải thuật đệ quy .............................................................20

Thiết kế giải thuật đệ quy...................................................................................21

Ưu điểm và nhược điểm của giải thuật đệ quy...................................................22

Phân loại giải thuật đệ quy ........................................................................................22

Đệ quy tuyến tính ...............................................................................................22

Đệ quy nhị phân .................................................................................................23

Đệ quy phi tuyến ................................................................................................24

Đệ quy tương hỗ.................................................................................................24

Giải một số bài toán phổ biến bằng giải thuật đệ quy ...............................................25

Bài toán tháp Hà Nội [9]. ...................................................................................25

Bài toán tìm kiếm với đệ quy nhị phân ..............................................................27

Bài toán chia thưởng ..........................................................................................29

Một số câu hỏi và bài tập có lời giải..........................................................................30

Ứng dụng giải thuật đệ quy để giải bài toán trong kinh doanh .................................34

Sử dụng đệ quy để tính tiền lãi gửi tiết kiệm ngân hàng....................................34

ii

Sử dụng đệ quy để tính tiền thưởng ...................................................................35

Sử dụng đệ quy để tính tiền lãi phải trả hàng tháng khi vay ngân hàng.............36

Một số câu hỏi và bài tập tự rèn luyện.......................................................................37

CHƯƠNG 3. DANH SÁCH ..............................................................................................38

Giới thiệu danh sách ..................................................................................................39

Danh sách đặc ............................................................................................................39

Định nghĩa ..........................................................................................................39

Ưu và nhược điểm của danh sách đặc ................................................................40

Khai báo danh sách đặc ......................................................................................40

Các thao tác trên danh sách đặc..........................................................................40

Danh sách liên kết......................................................................................................45

Định nghĩa và phân loại......................................................................................45

Danh sách liên kết đơn .......................................................................................45

Danh sách liên kết đôi ........................................................................................53

Danh sách liên kết vòng .....................................................................................58

Danh sách đa liên kết..........................................................................................58

Ứng dụng của danh sách liên kết........................................................................59

Ngăn xếp....................................................................................................................59

Định nghĩa ..........................................................................................................59

Khai báo cấu trúc ngăn xếp ................................................................................60

Các thao tác trên ngăn xếp .................................................................................61

Ứng dụng của ngăn xếp......................................................................................63

Hàng đợi ....................................................................................................................64

Định nghĩa ..........................................................................................................64

Khai báo cấu trúc của hàng đợi ..........................................................................66

Các thao tác trên hàng đợi..................................................................................67

Ứng dụng của hàng đợi ......................................................................................69

Một số câu hỏi, bài tập có lời giải..............................................................................71

Ứng dụng danh sách để giải một số bài toán trong kinh doanh.................................72

Chương trình quản lý sinh viên bằng cấu trúc danh sách đặc ............................72

Chương trình quản lý sách sử dụng cấu trúc danh sách liên kết đơn .................77

Chương trình quản lý bệnh nhân sử dụng cấu trúc hàng đợi .............................80

Chương trình đảo ngược danh sách các cuốn sách sử dụng ngăn xếp ...............84

Một số câu hỏi và bài tập tự rèn luyện.......................................................................86

CHƯƠNG 4. CÂY..............................................................................................................88

Các khái niệm cơ bản.................................................................................................89

Khái niệm cây.....................................................................................................89

iii

Các thuật ngữ .....................................................................................................89

Cách biểu diễn cây.....................................................................................................90

Cây nhị phân..............................................................................................................91

Một số tính chất của cây nhị phân......................................................................91

Duyệt cây nhị phân.............................................................................................92

Cây nhị phân tìm kiếm ..............................................................................................95

Định nghĩa..........................................................................................................95

Khai báo cấu trúc cây nhị phân tìm kiếm...........................................................96

Các thao tác trên cây nhị phân tìm kiếm............................................................96

Duyệt cây ...........................................................................................................96

Cây nhiều nhánh ......................................................................................................101

Giới thiệu cây TRIE ................................................................................................102

Cấu trúc dữ liệu Heap..............................................................................................103

Minh họa thao tác nhập xuất cây nhị phân tìm kiếm...............................................104

Một số câu hỏi và bài tập có lời giải........................................................................107

Ứng dụng cấu trúc cây để giải bài toán trong kinh doanh.....................................108

Chương trình quản lý sinh viên bằng cấu trúc cây.........................................108

Chương trình quản lý hàng hóa bằng cấu trúc cây.........................................112

Chương trình quản lý sách bằng cấu trúc cây ................................................115

Một số câu hỏi và bài tập tự rèn luyện ..................................................................118

CHƯƠNG 5. ĐỒ THỊ......................................................................................................119

Định nghĩa về đồ thị ................................................................................................120

Đường đi ..........................................................................................................122

Chu trình...........................................................................................................122

Bậc của đỉnh ............................................................................................................122

Đồ thị liên thông......................................................................................................123

Đồ thị có trọng số ....................................................................................................123

Biểu diễn đồ thị .......................................................................................................123

Biểu diễn đồ thị bằng ma trận kề .....................................................................123

Biễu diễn đồ thị bằng danh sách kề..................................................................124

Phép duyệt đồ thị.....................................................................................................125

Duyệt theo chiều sâu - DFS .............................................................................125

Duyệt theo chiều rộng - BFS............................................................................127

Cây khung và cây khung nhỏ nhất ..........................................................................128

Cây khung ........................................................................................................128

Cây khung nhỏ nhất .........................................................................................129

Thuật toán Prim tìm cây khung nhỏ nhất.........................................................130

iv

Thuật toán Krusal tìm cây khung nhỏ nhất ......................................................133

Thuật toán Dijkstra tìm đường đi ngắn nhất............................................................138

Mô tả thuật toán................................................................................................138

Chương trình minh họa giải thuật Dijkstra.......................................................141

Ứng dụng của đồ thị ................................................................................................142

Một số câu hỏi và bài tập có lời giải......................................................................143

Ứng dụng đồ thị để giải bài toán trong kinh doanh ...............................................148

Quản lý đường bay .........................................................................................148

Bài toán vận chuyển hàng hóa........................................................................149

Mạng lưới giao thông .....................................................................................152

Lắp đặt hệ thống điện văn phòng ...................................................................152

Một số câu hỏi và bài tập tự rèn luyện...................................................................153

CHƯƠNG 6. SẮP XẾP VÀ TÌM KIẾM........................................................................155

Sắp xếp.....................................................................................................................156

Giới thiệu về bài toán sắp xếp ..........................................................................156

Giải thuật Bubble Sort......................................................................................156

Giải thuật Selection Sort...................................................................................163

Giải thuật Insertion Sort ...................................................................................165

Giải thuật Interchange Sort...............................................................................168

Giải thuật Merge Sort.......................................................................................172

Giải thuật Quick Sort........................................................................................174

Giải thuật Heap Sort.........................................................................................177

Giải thuật Radix Sort........................................................................................183

Giải thuật Topo Sort.......................................................................................185

Tìm kiếm..................................................................................................................188

Khái niệm và vai trò của tìm kiếm dữ liệu .......................................................188

Phân loại...........................................................................................................189

Một số câu hỏi, bài tập có lời giải............................................................................193

Ứng dụng giải thuật sắp xếp và tìm kiếm để giải bài toán trong kinh doanh ..........194

Chương trình quản lý sinh viên sử dụng giải thuật InterChange Sort..............194

Chương trình quản lý hóa đơn bán hàng ..........................................................196

Chương trình quản lý hàng hóa ........................................................................200

Tính thời gian tối thiểu để vận chuyển hàng ....................................................202

Một số câu hỏi và bài tập tự rèn luyện.....................................................................203

CHƯƠNG 7. BẢNG BĂM ..............................................................................................204

Tìm hiểu về bảng băm .............................................................................................205

Kỹ thuật băm ....................................................................................................205

v

Hàm băm..........................................................................................................206

Các kỹ thuật xử lý va chạm .....................................................................................208

Kỹ thuật tạo dây chuyền (separated chaining).................................................208

Kỹ thuật định địa chỉ mở (open addressing) ....................................................208

Ứng dụng bảng băm ................................................................................................210

Một số câu hỏi và bài tập có lời giải........................................................................211

Một số câu hỏi và bài tập tự rèn luyện ....................................................................214

TÀI LIỆU THAM KHẢO...................................................................................................1

PHỤ LỤC..............................................................................................................................2

vi

DANH MỤC HÌNH ẢNH

Hình 1. 1- Từ bài toán thực tế đến chương trình trên máy tính .............................................3

Hình 1. 2-Mối quan hệ giữa cấu trúc dữ liệu và giải thuật ....................................................4

Hình 1. 3- Quá trình từ bài toán thực tế đến chương trình.....................................................8

Hình 1. 4- Đồ thị mô tả độ phức tạp của giải thuật..............................................................11

Hình 1. 5- Độ phức tạp giải thuật qua các hàm....................................................................14

Hình 2. 1- Cơ chế hoạt động của giải thuật đệ quy..............................................................20

Hình 2. 2 - Cơ chế hoạt động của bài toán tính giai thừa ....................................................21

Hình 2. 3 – Mô tả đệ quy tương hỗ .....................................................................................24

Hình 2. 4- Minh họa đệ quy bài toán Tháp Hà Nội .............................................................25

Hình 2. 5- Quá trình thực hiện bài toán Tháp Hà Nội .........................................................26

Hình 2. 6- Cơ chế tìm kiếm với đệ quy nhị phân.................................................................27

Hình 2. 7- Cấu trúc của mảng một chiều .............................................................................40

Hình 3. 1-Cấu trúc danh sách liên kết với con trỏ pHead và pTail......................................45

Hình 3. 2- Danh sách liên kết đơn........................................................................................45

Hình 3.3-Thêm một phần tử vào vị trí ở đầu danh sách ......................................................47

Hình 3. 4-Thêm một phần tử vào vị trí ở cuối danh sách ....................................................47

Hình 3. 5- Thêm một phần tử vào sau nút q ........................................................................48

Hình 3. 6-Xóa một phần tử ở vị trí đầu danh sách...............................................................48

Hình 3. 7- Xóa một phần tử đứng sau nút q.........................................................................49

Hình 3. 8- Xóa một phần tử có giá trị X ..............................................................................49

Hình 3. 9-Danh sách liên kết đôi..........................................................................................53

Hình 3. 10-Thêm một phần tử vào danh sách liên kết đôi...................................................54

Hình 3. 11-Thêm một phần tử vào vị trí cuối danh sách .....................................................54

Hình 3. 12-Thêm một phần tử sau phần tử q .......................................................................55

Hình 3. 13-Xóa một phần tử ở vị trí đầu danh sách trong danh sách liên kết đôi................56

Hình 3. 14-Xóa một phần tử đứng sau vị trí phần tử q trong danh sách liên kết đôi...........56

Hình 3. 15-Xóa một phần tử có giá trị X trong danh sách liên kết đôi................................57

Hình 3. 16-Danh sách liên kết vòng là một danh sách liên kết đơn.....................................58

Hình 3. 17-Danh sách liên kết vòng là một danh sách liên kết đôi......................................58

Hình 3. 18-Cấu trúc của danh sách đa liên kết.....................................................................58

Hình 3. 19- Minh họa về một ngăn xếp ...............................................................................59

Hình 3. 20-Hai tác vụ Push và Pop của ngăn xếp................................................................59

Hình 3. 21-Các tác vụ trong ngăn xếp .................................................................................60

Hình 3. 22-Quá trình chuyển đổi cơ số thập phân sang nhị phân ........................................64

vii

Hình 3. 23- Minh họa thao tác Push và Pop trong bài toán đổi cơ số..................................64

Hình 3. 24- Minh họa cơ chế của hàng đợi qua việc xếp hàng tính tiền tại quầy...............65

Hình 3. 25-Cấu trúc của hàng đợi........................................................................................65

Hình 3. 26-Minh họa thao tác thêm phần tử vào hàng đợi ..................................................65

Hình 3. 27-Minh họa tác vụ xóa phần tử trong hàng đợi.....................................................66

Hình 3. 28-Quá trình cài đặt giải thuật Radix Sort bằng hàng đợi ......................................70

Hình 4. 1- Sơ đồ tổ chức của một công ty ...........................................................................89

Hình 4. 2-Cây biểu diễn biểu thức.......................................................................................89

Hình 4. 3-Mức của cây.........................................................................................................90

Hình 4. 4-Biểu diễn cây bằng đồ thị ....................................................................................90

Hình 4. 5-Biểu diễn cây bằng giản đồ .................................................................................90

Hình 4. 6-Biểu diễn cây bằng phương pháp indentatio .......................................................91

Hình 4. 7- Cấu trúc của một cây nhị phân ...........................................................................91

Hình 4. 8-Cây nhị phân hoàn chỉnh .....................................................................................92

Hình 4. 9-Cây nhị phân đầy đủ ............................................................................................92

Hình 4. 10-Quá trình duyệt cây theo thứ tự trước của biểu thức toán học ..........................93

Hình 4. 11-Kết quả duyệt cây nhị phân theo thứ tự trước với các số nguyên .....................93

Hình 4. 12-Quá trình duyệt cây theo thứ tự giữa của biểu thức toán học............................93

Hình 4. 13-Kết quả duyệt cây nhị phân theo thứ tự giữa với các số nguyên.......................94

Hình 4. 14-Kết quả duyệt cây nhị phân theo thứ tự sau của biểu thức toán học .................94

Hình 4. 15-Kết quả duyệt cây nhị phân theo thứ tự sau với các số nguyên.........................94

Hình 4. 16- Chuyển cây tổng quát thành cây nhị phân........................................................95

Hình 4. 17-Cấu trúc cây nhị phân tìm kiếm.........................................................................95

Hình 4. 18-Xóa phần tử là nút lá..........................................................................................99

Hình 4. 19-Xóa phần tử có một nút con ............................................................................100

Hình 4. 20-Nút nhỏ nhất của cây con bên phải..................................................................100

Hình 4. 21-Nút nhỏ nhất của cây con bên trái ...................................................................100

Hình 4. 22-Cây Trie biểu diễn cho tập S gồm các chuỗi {bear, bell, bid, bull, buy, hear,

see, sell, stock, stop}..........................................................................................................102

Hình 4. 23-Cấu trúc dữ liệu Heap......................................................................................103

Hình 5. 1-Cấu trúc của đồ thị.............................................................................................120

Hình 5. 2- Một số ví dụ về đồ thi trong thực tế .................................................................121

Hình 5. 3- Đường đi...........................................................................................................122

Hình 5. 4-Đường đi đơn.....................................................................................................122

Hình 5. 5-Chu trình............................................................................................................122

Hình 5. 6-Bậc của đỉnh ......................................................................................................122

Hình 5. 7-Đồ thị liên thông và đồ thị không liên thông.....................................................123

viii

Hình 5. 8-Đồ thị có trọng số ..............................................................................................123

Hình 5. 9-Đồ thị không có trọng số ...................................................................................123

Hình 5. 10-Biểu diễn đồ thị bằng ma trận kề .....................................................................123

Hình 5. 11-Biểu diễn đồ thị bằng danh sách kề .................................................................124

Hình 5. 12-Biểu diễn đồ thị không có trọng số với danh sách kề ......................................125

Hình 5. 13-Kết quả duyệt đồ thị theo DFS ........................................................................126

Hình 5. 14-Duyệt đồ thị theo chiều rộng ...........................................................................127

Hình 5. 15-Đồ thị gồm cá đỉnh ..........................................................................................128

Hình 5. 16-Đồ thị và cây khung.........................................................................................129

Hình 5. 17-Cây khung nhỏ nhất.........................................................................................129

Hình 6. 1- Minh họa giải thuật Bubble Sort.......................................................................157

Hình 6. 2- Minh họa giải thuật Insertion Sort....................................................................166

Hình 6. 3-Quá trình sắp xếp của giải thuật Merge Sort .....................................................173

Hình 6. 4-Cấu trúc Heap ....................................................................................................178

Hình 6. 5-Quá trình sắp xếp của giải thuật Radix Sort ......................................................184

Hình 6. 6-Minh họa giải thuật Topo Sort...........................................................................185

Hình 6. 7- Minh họa phương pháp tìm kiếm nhị phân với cuốn danh bạ điện thoại .........191

Hình 7. 1-Mô tả kỹ thuật băm............................................................................................205

Hình 7. 2-Hàm băm với phép chia dư cho 10 ....................................................................206

Hình 7. 3-HIện tượng va chạm ..........................................................................................208

Hình 7. 4-Kỹ thuật tạo dây chuyền ....................................................................................208

ix

DANH MỤC BẢNG BIỂU

Bảng 1-Các kiểu dữ liệu định sẳn trong Python ........................................................5

Bảng 2- Kiểu dữ liệu và ví dụ minh họa cho kiểu dữ liệu .........................................6

Bảng 3- Mô tả giải thuật duyệt theo chiều sâu (DFS)............................................126

Bảng 4- Quá trình duyệt theo chiều rộng (BFS)....................................................128

Bảng 5-Mô tả quá trình thăm dò tuyến tính ...........................................................209

Bảng 6-Mô tả quá trình chèn giá trị khóa theo phương pháp băm kép..................210

x

THUẬT NGỮ SỬ DỤNG

Tiếng Anh Tiếng Việt

Array Mảng

ASCII (American Standard Code for

Information Interchange) Chuẩn mã trao đổi thông tin Hoa Kỳ

Algorithm Giải thuật

BigO O lớn

BFS (Breadth First Search) Tìm kiếm theo chiều rộng

Circular linked list Danh sách liên kết vòng

Child Con

Class Lớp

Connected Liên thông (đồ thị)

CPU (Central Processing Unit) Bộ xử lý trung tâm

Data structure Cấu trúc dữ liệu

DB Indexing (Data Base Indexing) Chỉ mục cơ sở dữ liệu

Devide-and-conquer Chia để trị

Double linked list Danh sách liên kết kép

DFS (Depth First Search) Tìm kiếm theo chiều sâu

Dynamic programming Quy hoạch động

Edge list Danh sách cạnh

Input Đầu vào (dữ liệu)

Inorder traversal Duyệt theo thứ tự giữa

Graph Đồ thị

Hash table Bảng băm

Heap Đống (trong cấu trúc dữ liệu)

Output Đầu ra (dữ liệu)

LIFO (Last In First Out) Vào sau ra trước

FIFO (First In First Out) Vào trước ra trước

Linked list Danh sách liên kết

Minimum spanning tree Cây khung nhỏ nhất

Front Đầu (hàng đợi)

Matrix Ma trận

Multi-linked lists Danh sách đa liên kết

Node Nút

None Không (không có)

NULL Không tồn tại, không xác định

Parent Cha

Postorder traversal Duyệt theo thứ tự sau

Preorder Duyệt theo trung tự

Prefix Tiền tố

Queue Hàng đợi

Quick sort Sắp xếp nhanh

Selection sort Sắp xếp chọn lựa

Single linked list Danh sách liên kết đơn

xi

Stack Ngăn xếp

Rear Đuôi (hàng đợi)

Recursive Đệ quy

Root Gốc (của cây)

Top Đỉnh (stack)

Top-Down Design Thiết kế từ trên - xuống

Tree Cây

Tải ngay đi em, còn do dự, trời tối mất!