1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Tiểu luận) chuyên đề công nghệ phần mềm đề tài tìm hiểu thuật toán tìm kiếm tuyếntính trong ngôn ngữ lập trình c

26 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Thuật Toán Tìm Kiếm Tuyến Tính Trong Ngôn Ngữ Lập Trình C
Tác giả Vũ Đình Huấn
Người hướng dẫn Nguyễn Đình Hiến
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Công Nghệ Thông Tin
Thể loại tiểu luận
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 26
Dung lượng 4,38 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong những năm qua, các nhà khoa học máy tính đã tạo ranhiều thuật toán tìm kiếm để đáp ứng các nhu cầu sử dụng, khai thác thông tin với mụcđích cho ra các kết quả tốt, đáp ứng nhu cầu

Trang 1

HỌC VIỆN CÔNG NGHỆ B U CHÍNH VIỄN THÔNG Ƣ

Khoa Công Nghệ Thông Tin

Tháng 02/2023

Trang 2

MỤC LỤC

MỤC LỤC 1

LỜI CẢM ƠN 2

LỜI NÓI ĐẦU 3

CH ƠNG I: GIỚI THIỆU CHUNG Ƣ 4

1.1 Lý do chọn đề tài 4

1.2 Giới thiệu về ngôn ngữ lập trình C# 4

1.2.1 Khái niệm 4

1.2.2 Đặc tr ng ƣ 5

1.2.3 Các kiểu dữ liệu 6

1.2.4 Soạn thảo và biên dịch ch ơng trình C# ƣ 7

1.2.5 Ƣ u điểm 10

1.2.6: Nh ợc điểm ƣ 11

CH ƠNG II: THUẬT TOÁN TÌM KIẾM TUẦN TỰ Ƣ 11

2.1 Đặt vấn đề 11

2.1 T t ởng của thuật toán ƣ ƣ 12

2.2 Nội dung và cách cài đặt của thuật toán 13

2.3 Cài đặt thuật toán 13

2.4 Đánh giá thuật toán 15

2.4.1 Đặc điểm 16

2.4.2 Hiệu quả 16

2.4.3 Ƣ u điểm 16

2.4.4 Nh ợc điểm ƣ 17

CH ƠNG III: ÁP DỤNG THUẬT TOÁN TÌM KIẾM Ƣ 17

3.1 Bài toán 17

3.2 H ớng giải quyết ƣ 17

KẾT LUẬN 21

Trang 3

LỜI CẢM ƠN

•••

khoa Công nghệ thông tin, đến nay em đã hoàn thành xong bản báo cáo môn họcChuyên đề Công nghệ phần mềm với đề tài: Tìm hiểu thuật toán tìm kiếm tuyếntính trong ngôn ngữ lập trình C# Em xin chân thành cảm ơn quý thầy cô đã giúp

đỡ em thực hiện báo cáo này Đặc biệt là thầy Nguyễn Đình Hiến đã tận tình

Đồng thời, em cũng xin cảm ơn bạn bè, đồng nghiệp đã gắn bó, chia sẻ rấtnhiều kinh nghiệm, những kiến thức để hoàn thiện bản báo cáo môn học.Tuy nhiên, do thời gian có hạn nên em không thể tìm hiểu sâu về thuật

trong báo cáo Trong quá trình xây dựng báo cáo, không thể tránh khỏi những

Em xin chân thành cảm ơn!

Lào Cai, ngày 08 tháng 03 năm 2023

Sinh viên thực hiện

Vũ Đinh Huấn

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 4

LỜI NÓI ĐẦU

Công nghệ thông tin là một trong những ngành có chuyển biến tích cực nhấttrong những năm qua khi đã triển khai ứng dụng công nghệ thông tin trong đời

dùng Internet cao trên thế giới Các hoạt động của doanh nghiệp, cá nhân đều đã,đang sử dụng mạng Internet trên các nền tảng kết nối khác nhau Tình hình phát

trong 20 năm qua Theo thống kê vào năm 2000, ngành Công nghệ thông tin chỉ

mức tăng bình quân 37%/năm trong suốt 19 năm; đóng góp vào 14,3% GDP củaViệt Nam, gấp 28 lần so với năm 2000; năng suất lao động của ngành Công nghệ

2022, ngành công nghiệp công nghệ số tiếp tục là một điểm sáng của kinh tế Việt Namvới doanh thu ớc đạt 148 tỷ USD, tăng tr ởng hơn 8.7% so với năm 2021, đóng gópƣ ƣtrên 34 tỷ USD vào GDP của cả n ớc; số l ợng doanh nghiệp hơn 70.000 ớc tínhƣ ƣ Ƣđến hết tháng 2/2023, số doanh nghiệp công nghệ số đăng ký hoạt động đạt khoảng70.800 Đến nay, nhiều địa ph ơng trên toàn quốc cũng ứng dụng công nghệ số vàoƣhoạt động quản lý kinh tế, xã hội

Cùng với sự phát triển mạnh mẽ của công nghệ số, dữ liệu số ngày một phổ biến

ứng dụng có thể gặp nhiều khó khăn, mất nhiều thời gian, công sức để tìm kiếm

chóng và thực sự hiệu quả Trong những năm qua, các nhà khoa học máy tính đã tạo ranhiều thuật toán tìm kiếm để đáp ứng các nhu cầu sử dụng, khai thác thông tin với mục

Trong bài báo cáo này, em sẽ đi tìm hiểu về bài toán tìm kiếm và nghiên

nghệ thông tin trong thực tiễn

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 5

chuyển đổi số, nhập thông tin của tiêu chí đánh giá cần tìm kiếm, hệ thống nhanh

chuyển đến các cơ quan, đơn vị chức năng có thẩm quyền để tìm kiếm, xin thôngtin Đây là một số ứng dụng của bài toán tìm kiếm trong các hệ thống tin học.Tìm kiếm luôn là thao tác nền móng cho rất nhiều tác vụ tính toán Tìm kiếm

quá trình xử lý nào đó Đặc biệt, trong giai đoạn hiện nay, giai đoạn đẩy mạnh chuyển

Trong bài báo cáo này, em sẽ đi tìm hiểu về bài toán tìm kiếm và nghiên

hợp nhất với yêu cầu của bài toán đặt ra

1.2 Giới thiệu về ngôn ngữ lập trình C#

1.2.1 Khái niệm

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 6

Executable Code và Runtime Environment, cho phép chúng ta sử dụng các ngônngữ high-level đa dạng trên các nền tảng và cấu trúc máy tính khác nhau.C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo mộtứng dụng Windows Forms hay WPF (Windows Presentation Foundation), trởnên rất dễ dàng Cho tới hiện nay thì #C đang là một trong những ngôn ngữ

phổ biến nhất trên thế giới

1.2.2 Đặc tr ng ƣ

dụng rộng rãi:

- C# là ngôn ngữ đơn giản

ngữ C# khá đơn giản Nếu chúng ta thân thiện với C và C++ hoậc thậm chí làJava, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp, biểu thức, toán tử và

- C# là ngôn ngữ hiện đại

Một vài khái niệm khá mới mẻ khá mơ hồ với các bạn vừa mới học lập

tính trên qua các bài học trong series này

(abstraction), tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính

kế thừa (inheritance) C# hỗ trợ cho chúng ta tất cả những đặc tính trên Và để

- C# là một ngôn ngữ ít từ khóa

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 8

có càng nhiều từ khóa thì sẽ càng mạnh mẽ hơn Điều này không phải sự thật,lấy ví dụ ngôn ngữ C# làm điển hình nhé Nếu bạn học sâu về C# bạn sẽ thấy

Ngoài những đặc điểm trên thì còn một số u điểm nổi bật của C#: ƣ

- C# có cấu trúc khá gần gũi với các ngôn ngữ lập trình truyền thống, nên cũng khá dể dàng tiếp cận và học nhanh với C#

- C# có thể biên dịch trên nhiều nền tảng máy tính khác nhau

đến từ bộ phận này

- C# có IDE Visual Studio cùng nhiều plug-in vô cùng mạnh mẽ

Nền tảng NET:

Winforms, ASP.NET(1-4) hoạt động dựa trên NET Framework

Mono là phiên bản cộng đồng nhằm mang NET đến những nền tảng ngoài

nền tảng trên các hệ điều hành khác nhau (Windows, Linux, MacOS,…)

1.2.3 Các kiểu dữ liệu

C# chia thành hai tập hợp kiểu dữ liệu chính:

C# phân tập hợp kiểu dữ liệu này thành hai loại:

kiểu dữ liệu tham trị thì vùng nhớ của nó sẽ chứa giá trị của dữ liệu

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

An toànứng dụn… 88% (24)

CDT1429 Thiet Ke Web Co Ban Baigia…

An toànứng dụng… 100% (3)

217

Trang 9

7Danh sách kiểu dữ liệu tham trị: bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, uint, ulong, ushort.

- Kiểu dữ liệu tham chiếu (reference): Khác với kiểu dữ liệu tham trị, kiểu dữ

Chúng tham chiếu tới một vị trí bộ nhớ Có thể sử dụng nhiều biến cùngtham chiếu tới tới một vị trí bộ nhớ Nếu dữ liệu trong vị trí bộ nhớ bị thay đổi bởimột trong số các biến, thì biến khác tự động phản ánh sự thay đổi về giá trị này

Ví dụ các kiểu tham chiếu có sẵn trong C# là: object, dynamic, và string.Bạn có thể chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác qua việc boxing và unboxing

Các kiểu dữ liệu xây dựng sẵn:

- object: kiểu dữ liệu cơ bản của tất cả các kiểu khác

Tất cả các kiểu dữ liệu xây dựng sẵn là kiểu dữ liệu giá trị ngoại trừ các

struct đều là kiểu dữ liệu tham chiếu

Chuyển đổi kiểu:

1.2.4 Soạn thảo và biên dịch ch ơng trình C# ƣ

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 10

line để biên dịch và thực thi

Sử dụng ch ơng trình soạn thảo văn bản ƣ

- Dùng bất kỳ một trình soạn thảo văn bản để lập trình

- Dùng bộ IDE của VS.NET

cod e) Có giao diện đồ họa và xử lý sự kiện

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 11

Quá trình dịch của ngôn ngữ C#

trình biên dịch, trình này sẽ thực hiện chuyển đoạn C# thành một trong những

Time Compiler để thực hiện chuyển MSIL code trở thành ngôn ngữ của máy rồi

ngôn ngữ máy nên bạn có thể dịch nó ra rất nhanh

Sử dụng Visual Studio để thực hiện biên dịch C#, quá trình biên dịch cho

một loại ngôn ngữ trung gian Microsoft Intermediate Language (MSIL) Sau khi

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C# Sinh viên: Nguyễn Thị Mai – B19DTCN024

Trang 12

thành ngôn ngữ máy Vì vậy, thông qua Just In Time Compiler thì máy tính sẽ hiểu

thực hiện ghi chú trên 1 dòng

1.2.5 u điểm Ƣ

cho mục đích thay thế cho ASM trong những hệ thống có bộ nhớ hạn chế

- Có khả năng thực hiện các thuật toán giúp hỗ trợ rất nhiều kiểu dữ liệu khác

- Là loại ngôn ngữ lập trình rất an toàn và nó không cho phép việc chuyển

- Trong C# sẽ cho kết quả trả về thuộc các hàm đa phần đều là một object

thống cảnh báo luôn mà không cần phải chờ đến lúc chạy

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 13

nhiều cho việc xây dựng Winform, WPF, website bằng MVC.NET Hiện nay, nó ngàycàng trở nên phổ biến trong việc xây dựng nền tảng cho các ứng dụng di động

- Việc học dễ dàng hơn bởi cộng đồng C# đang rất phát triển và rộng mở

trợ, giúp đỡ cùng nhau phát triển kỹ năng và kinh nghiệm về C#

1.2.6: Nh ợc điểm ƣ

- Khi muốn xài IDE bạn cần phải trả phí sử dụng

- Chỉ đem lại hiệu quả tốt nhất trên Window, chỉ chạy trên nền Windows và

- Lập trình Mobile cần phải thông qua trung gian Xamarin (có phí)

- Sử dụng Database tốt nhất với SQL Server

CH ƠNG II: THUẬT TOÁN TÌM KIẾM TUẦN Ƣ

TỰ 2.1 Đặt vấn đề

thống đánh giá kết quả thực hiện của các chỉ số cải cách hành chính chẳng hạn

Ở đây, “khoá” là chỉ số và “phần tử” là diễn giải nghĩa cho chỉ số đó Mỗi phần

Giải thuật tìm kiếm là một thuật toán lấy đầu vào là một bài toán và trả về

thao tác tổng quát sao cho ta có thể áp dụng chúng cho các bài toán tìm kiếmkhác nhau Các thao tác đó gồm:

- Khởi tạo cấu trúc dữ liệu (INITIALIZE)

- Tìm kiếm một hay nhiều phần tử có khoá đã cho (SEARCH)

- Chèn thêm một phần tử mới (INSERT)

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 14

- Nối lại từ điển để tạo thành một từ điển lớn hơn (JOIN)

thì trạng thái của thủ tục tìm kiếm sẽ chứa chính xác thông tin cần thiết để chènthêm một phần tử mới với khoá đã cho Năm thao tác liệt kê trên đều có những

nghị để dùng phối hợp các thao tác trên một cách hiệu quả

Hiện nay có rất nhiều thuật giải tìm kiếm Tuy nhiên, trong phạm vi bàibáo cáo này, em sẽ chỉ nghiên cứu phép tìm kiếm tuần tự hay còn gọi là phép tìmkiếm truyến tính

2.1 T t ởng của thuật toán ƣ ƣ

Thuật toán tìm kiếm tuần tự (Sequential Search) hay tìm kiếm tuyến tính

là một kỹ thuật tìm kiếm đơn giản

Công việc tìm kiếm bao giờ cũng hoàn thành bởi một trong hai tình huống:

nói phép tìm kiếm thành công (successful)

thì ta nói phép tìm kiếm không thành công (unsuccessful)

Điều kiện dừng thuật toán là tìm thấy phần tử cần tìm hoặc đã hết danh sách

Ví dụ: Xét dãy số S cần tìm có n phần tử: a[0], a[1], a[2] a[n-1] Giá trị cần tìm là x

dãy S

hoặc gặp điều kiện dừng vòng lặp Trong quá trình duyệt nếu có bản ghi trùng với

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 15

mà không có bản ghi nào trùng giá trị thì quá trình tìm kiếm không thành công

2.2 Nội dung và cách cài đặt của thuật toán

Bước 1: Gán i = 0;//duyệt từ đầu mảng

Bước 2: while((S[i] != X) && (i < n))

{

i = i + 1;

}

Bước 3: if(i < n) tìm thấy phần tử có khóa bằng X tại nút i – 1;

Bước 4: else không tìm thấy phần tử có khóa bằng X;

Bước 5: kết thúc.

Có thể sử dụng cấu trúc lặp khác nhau:

Bước 1: Gán i = 0;//duyệt từ đầu mảng

Bước 2: for (i = 0; i<n; i++)

2.3 Cài đặt thuật toán:

Hàm Sequential_Search thực hiện việc tìm kiếm phần tử có giá trị X trên mảng

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 16

typedef <kiểu_dữ_liệu> KeyType;

int Sequential_Search(dataArray S, KeyType X, int n); {

typedef <kiểu_dữ_liệu> KeyType;

int Sequential_Search(dataArray S, KeyType X, int n); {

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 17

X

2.4 Đánh giá thuật toán

Độ phức tạp của thuật toán Sequential_Search() là O(n).

so sánh để kiểm tra sự tìm thấy và kiểm soát sự hết mảng trong quá trình duyệtmảng Chúng ta có thể giảm bớt đi một phép so sánh bằng cách ta thêm vào cuốimảng một phần tử có giá trị bằng X để nhận diện ra sự duyệt hết mảng Khi đó,

typedef <kiểu_dữ_liệu> KeyType;

int Sequential_Search(dataArray S, KeyType X, int n);

Trang 18

Số phép gán: Gavg = n / 2

Số phép so sánh: Savg = (n + 1) / 2

trị cần tìm có nằm trong mảng hay không mà không cần phải duyệt hết tất cả cácphần tử của mảng do ngay khi đạt đến một phần tử lớn hơn (hoặc nhỏ hơn) giátrị cần tìm thì việc tìm kiếm có thể kết thúc

2.4.1 Đặc điểm

- Có tính lặp đi lặp lại và sử dụng cách tiếp cận tuần tự

- Độ phức tạp thời gian của tìm kiếm tuyến tính là O (n)

đầu tiên, tức là O (1)

kết

chèn vào cuối danh sách

- Rất dễ sử dụng và không cần bất kỳ yếu tố nào

2.4.2 Hiệu quả

ghi trong bảng tìm kiếm xác định hiệu quả của kỹ thuật Nếu bản ghi mong muốn có

bản ghi mong muốn là bản ghi cuối cùng, thì n phải so sánh Nếu bản ghi sẽ xuất hiện

Là một giải thuật đơn giản khi hiện thực và khá hiệu quả với danh sách đủ

2.4.3 u điểm Ƣ

- Tìm kiếm tuyến tính rất dễ sử dụng và không cần bất kỳ yếu tố nào

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 19

2.4.4 Nh ợc điểm ƣ

CH ƠNG III: ÁP DỤNG THUẬT TOÁN TÌM KIẾM Ƣ

- Quản lý tài khoản

- Quản lý danh mục chỉ tiêu đánh giá

- Quản lý danh mục chỉ tiêu thành phần

- Tự chấm điểm

- Thẩm định kết quả tự chấm điểm

- Xếp hạng kết quả chấm điểm

- Thống kê, xuất báo cáo

Trong danh sách hiển thị các tiêu chí đánh giá, ta cần tìm kiếm các tiêu chí đánh giá có bao gồm từ khóa tìm kiếm nhất định

3.2 H ớng giải quyết ƣ

Sử dụng hệ quản trị cơ sở dữ liệu SQL server, xây dựng cơ sở dữ liệu cho

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 21

Giao diện hiển thị danh sách các chỉ tiêu đánh giá:

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 22

20Xây dựng chức năng tìm kiếm tiêu chí đánh giá trong danh sách các tiêu chí hiển thị:

vòng lặp foreach (……){ }

bao gồm giá trị text của textbox txtBaoCaoNamName, thì hệ thống trả lại bảngkết quả tìm kiếm

Nếu không tồn tại giá trị tên của chỉ tiêu trong bảng chỉ tiêu đánh giá bao gồm giá trịtext của textbox txtBaoCaoNamName, hệ thống thông báo: “Không có chỉ tiêu trên”

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 23

KẾT LUẬN

Với thuật toán tìm kiếm tuần tự, em đã xây dựng hoàn thiện chức năng tìm kiếm các tiêu chí đánh giá chỉ số cải cách hành chính:

- Xây dựng dữ liệu số hóa với gần 160 tiêu chí đánh giá, 02 cấp thực hiện,

02 vòng đánh giá kết quả thực hiện của các chỉ số

- Chức năng tìm kiếm đã rút ngắn thời gian dò tìm thông tin, xác định tính chính xác của tiêu chí trên hệ thống

- Thống kê, báo cáo theo các tiêu chí, điều kiện đặt ra một cách nhanh chóng, kịp thời

- Đảm bảo tính chính xác của thông tin tìm kiếm

- Tiết kiệm sức lực cán bộ thực hiện tự chấm điểm, thẩm định trên giải pháp

Để thực hiện tốt nhất và phù hợp với các yêu cầu đề ra, em sẽ tiếp tụcnghiên cứu thuật toán tìm kiếm tuần tự, vận dụng các điểm mạnh của thuật toánvào các yêu cầu cụ thể nhằm đảm bảo hiệu năng tìm kiếm Đồng thời, em sẽnghiên cứu, tìm hiểu sâu hơn về các thuật toán tìm kiếm khác để vận dụng, thực

Trong quá trình thực hiện báo cáo này không thể tránh khỏi những thiếusót Kính mong sự thông cảm, góp ý và bổ sung của các thầy cô và các bạn đểgiải pháp ngày càng hoàn thiện hơn

Em xin chân thành cảm ơn !

Tìm hiểu thuật toán tìm kiếm trong ngôn ngữ C#

Trang 26

An toàn

ứng dụn… 88% (24)

Ngày đăng: 26/12/2023, 04:56

HÌNH ẢNH LIÊN QUAN

Hình minh họa: - (Tiểu luận) chuyên đề công nghệ phần mềm  đề tài tìm hiểu thuật toán tìm kiếm tuyếntính trong ngôn ngữ lập trình c
Hình minh họa: (Trang 16)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w