Giới thiệu thuật toán Python

Từ Thuật toán có nghĩa là ” Một tập hợp các quy tắc hoặc hướng dẫn hữu hạn cần tuân theo trong các phép tính hoặc các hoạt động giải quyết vấn đề khác ” Hoặc “ Một quy trình giải một bài toán trong một số bước hữu hạn thường liên quan đến các phép toán đệ quy”

Do đó, Thuật toán đề cập đến một chuỗi các bước hữu hạn để giải quyết một vấn đề cụ thể

Các thuật toán có thể đơn giản và phức tạp tùy thuộc vào những gì bạn muốn đạt được

Có thể hiểu bằng cách lấy ví dụ nấu một công thức mới. Để nấu một công thức mới, người ta đọc hướng dẫn và các bước rồi thực hiện từng cái một theo trình tự nhất định. Kết quả thu được như vậy là món ăn mới được nấu chín hoàn hảo. Mỗi khi bạn sử dụng điện thoại, máy tính, máy tính xách tay hoặc máy tính bỏ túi, bạn đang sử dụng Thuật toán. Tương tự như vậy, các thuật toán giúp thực hiện một tác vụ trong lập trình để có được đầu ra như mong đợi

Thuật toán được thiết kế không phụ thuộc vào ngôn ngữ, tôi. e. chúng chỉ là những hướng dẫn đơn giản có thể được thực hiện bằng bất kỳ ngôn ngữ nào và đầu ra sẽ giống nhau, như mong đợi

Các đặc điểm của một thuật toán là gì?

Vì người ta sẽ không làm theo bất kỳ hướng dẫn bằng văn bản nào để nấu công thức, mà chỉ làm theo tiêu chuẩn. Tương tự như vậy, không phải tất cả các hướng dẫn lập trình bằng văn bản đều là thuật toán. Để một số hướng dẫn trở thành một thuật toán, nó phải có các đặc điểm sau

  • Rõ ràng và rõ ràng. Thuật toán phải rõ ràng và rõ ràng. Mỗi bước của nó phải rõ ràng về mọi mặt và chỉ dẫn đến một ý nghĩa
  • Đầu vào được xác định rõ. Nếu một thuật toán yêu cầu lấy đầu vào, thì đó phải là đầu vào được xác định rõ. Nó có thể có hoặc không có đầu vào
  • Đầu ra được xác định rõ. Thuật toán phải xác định rõ ràng đầu ra nào sẽ được tạo ra và nó cũng phải được xác định rõ. Nó sẽ tạo ra ít nhất 1 đầu ra
  • hữu hạn. Thuật toán phải hữu hạn, i. e. nó sẽ chấm dứt sau một thời gian hữu hạn
  • khả thi. Thuật toán phải đơn giản, chung chung và thực tế để có thể thực hiện được với các tài nguyên sẵn có. Nó không được chứa một số công nghệ tương lai hoặc bất cứ thứ gì
  • Ngôn ngữ độc lập. Thuật toán được thiết kế phải độc lập với ngôn ngữ, tôi. e. nó phải chỉ là các hướng dẫn đơn giản có thể được thực hiện bằng bất kỳ ngôn ngữ nào và đầu ra sẽ giống nhau, như mong đợi

Thuộc tính của thuật toán

  • Nó sẽ chấm dứt sau một thời gian hữu hạn
  • Nó sẽ tạo ra ít nhất một đầu ra
  • Nó sẽ không có hoặc nhiều đầu vào
  • Nó phải mang tính xác định có nghĩa là đưa ra cùng một đầu ra cho cùng một trường hợp đầu vào
  • Mỗi bước trong thuật toán phải hiệu quả. e. mỗi bước nên làm một số công việc

Các loại thuật toán

Có một số loại thuật toán có sẵn. Một số thuật toán quan trọng là

1. Thuật toán vét cạn. Đó là cách tiếp cận đơn giản nhất cho một vấn đề. Thuật toán brute force là cách tiếp cận đầu tiên được tìm thấy khi chúng ta gặp sự cố

2. thuật toán đệ quy. Một thuật toán đệ quy dựa trên đệ quy. Trong trường hợp này, một vấn đề được chia thành nhiều phần nhỏ và gọi đi gọi lại cùng một chức năng

3. Thuật toán quay lui. Thuật toán quay lui về cơ bản xây dựng giải pháp bằng cách tìm kiếm trong số tất cả các giải pháp có thể. Sử dụng thuật toán này, chúng tôi tiếp tục xây dựng giải pháp theo các tiêu chí. Bất cứ khi nào một giải pháp không thành công, chúng tôi sẽ truy ngược lại điểm thất bại và xây dựng giải pháp tiếp theo và tiếp tục quá trình này cho đến khi chúng tôi tìm ra giải pháp hoặc tất cả các giải pháp khả thi đều được xem xét

4. thuật toán tìm kiếm. Các thuật toán tìm kiếm là những thuật toán được sử dụng để tìm kiếm các phần tử hoặc nhóm phần tử từ một cấu trúc dữ liệu cụ thể. Chúng có thể thuộc các loại khác nhau dựa trên cách tiếp cận của chúng hoặc cấu trúc dữ liệu mà phần tử sẽ được tìm thấy

5. thuật toán sắp xếp. Sắp xếp là sắp xếp một nhóm dữ liệu theo một cách cụ thể theo yêu cầu. Các thuật toán giúp thực hiện chức năng này được gọi là thuật toán sắp xếp. Nói chung các thuật toán sắp xếp được sử dụng để sắp xếp các nhóm dữ liệu theo cách tăng dần hoặc giảm dần

6. thuật toán băm. Thuật toán băm hoạt động tương tự như thuật toán tìm kiếm. Nhưng chúng chứa một chỉ mục có ID chính. Trong quá trình băm, một khóa được gán cho dữ liệu cụ thể

7. Thuật toán chia để trị. Thuật toán này chia một vấn đề thành các vấn đề con, giải quyết một vấn đề con duy nhất và hợp nhất các giải pháp lại với nhau để có được giải pháp cuối cùng. Nó bao gồm ba bước sau

  • Chia
  • Giải quyết
  • Phối hợp

8. thuật toán tham lam. Trong loại thuật toán này, giải pháp được xây dựng từng phần. Giải pháp của phần tiếp theo được xây dựng dựa trên lợi ích trước mắt của phần tiếp theo. Giải pháp mang lại nhiều lợi ích nhất sẽ được chọn làm giải pháp cho phần tiếp theo

9. Thuật toán lập trình động. Thuật toán này sử dụng khái niệm sử dụng giải pháp đã được tìm thấy để tránh tính toán lặp lại cùng một phần của vấn đề. Nó chia vấn đề thành các vấn đề con chồng chéo nhỏ hơn và giải quyết chúng

10. Thuật toán ngẫu nhiên. Trong thuật toán ngẫu nhiên, chúng tôi sử dụng một số ngẫu nhiên để nó mang lại lợi ích ngay lập tức. Số ngẫu nhiên giúp quyết định kết quả mong đợi

Để tìm hiểu thêm về các loại thuật toán, hãy tham khảo bài viết về “Các loại thuật toán“

Ưu điểm của thuật toán

  • nó rất dễ hiểu
  • Một thuật toán là một biểu diễn từng bước của một giải pháp cho một vấn đề nhất định
  • Trong Thuật toán, vấn đề được chia thành các phần hoặc các bước nhỏ hơn, do đó, lập trình viên sẽ dễ dàng chuyển đổi nó thành một chương trình thực tế hơn.

Nhược điểm của thuật toán

  • Viết một thuật toán mất nhiều thời gian nên rất tốn thời gian
  • Hiểu logic phức tạp thông qua các thuật toán có thể rất khó
  • Các câu lệnh rẽ nhánh và vòng lặp rất khó hiển thị trong Thuật toán[imp]

Làm thế nào để thiết kế một thuật toán?

Để viết một thuật toán, cần có những điều kiện tiên quyết sau đây.
 

  1. Vấn đề được giải quyết bằng thuật toán này tôi. e. định nghĩa vấn đề rõ ràng
  2. Các ràng buộc của vấn đề phải được xem xét trong khi giải quyết vấn đề
  3. Đầu vào được thực hiện để giải quyết vấn đề
  4. Đầu ra được mong đợi khi vấn đề được giải quyết
  5. Giải pháp cho vấn đề này, nằm trong các ràng buộc đã cho

Sau đó, thuật toán được viết với sự trợ giúp của các tham số trên sao cho giải được bài toán.
Ví dụ. Xét ví dụ cộng ba số và in ra tổng.
 

  • Bước 1. Đáp ứng các điều kiện tiên quyết 
    Như đã thảo luận ở trên, để viết một thuật toán, các điều kiện tiên quyết của nó phải được đáp ứng.
    1. Bài toán cần giải bằng thuật toán này. Cộng 3 số và in tổng của chúng
    2. Các ràng buộc của bài toán cần xem xét khi giải bài toán. Các số chỉ được chứa chữ số và không có ký tự nào khác
    3. Đầu vào được thực hiện để giải quyết vấn đề. Ba số cần cộng
    4. Đầu ra được mong đợi khi vấn đề được giải quyết. Tổng của ba số được lấy làm đầu vào i. e. một giá trị số nguyên duy nhất
    5. Giải pháp cho vấn đề này, trong các ràng buộc đã cho. Giải pháp bao gồm thêm 3 số. Nó có thể được thực hiện với sự trợ giúp của toán tử '+' hoặc bit-khôn ngoan hoặc bất kỳ phương pháp nào khác
  • Bước 2. Thiết kế thuật toán
    Bây giờ, hãy thiết kế thuật toán với sự trợ giúp của các điều kiện tiên quyết ở trên.
    Thuật toán cộng 3 số và in tổng của chúng.
    1. BẮT ĐẦU
    2. Khai báo 3 biến số nguyên num1, num2 và num3
    3. Lấy ba số cần thêm làm đầu vào trong các biến số num1, num2 và num3 tương ứng
    4. Khai báo một biến số nguyên sum để lưu tổng kết quả của 3 số
    5. Cộng 3 số và lưu kết quả vào biến sum
    6. In ra giá trị của biến sum
    7. CHẤM DỨT
  • Bước 3. Kiểm tra thuật toán bằng cách thực hiện nó.
    Để kiểm tra thuật toán, hãy triển khai nó bằng ngôn ngữ C.

Chương trình

C++




// C++ program to add three numbers

// with the help of above designed

// algorithm

#include

using namespace std;

________số 8

int // C++ program to add three numbers0

// C++ program to add three numbers1

// C++ program to add three numbers2

// C++ program to add three numbers2____14

// C++ program to add three numbers2____16

// C++ program to add three numbers2int // C++ program to add three numbers9

________số 8

// C++ program to add three numbers2// with the help of above designed2

// C++ program to add three numbers2int // with the help of above designed5

________số 8

// C++ program to add three numbers2____28

// C++ program to add three numbers2____30// algorithm1____32

// C++ program to add three numbers2____34

// C++ program to add three numbers2____30// algorithm7 // algorithm8

________số 8

// C++ program to add three numbers2// algorithm0#include 2// algorithm2

// C++ program to add three numbers2____45

// C++ program to add three numbers2____30// algorithm7 #include 9

________số 8

// C++ program to add three numbers2// algorithm0using3// algorithm2

// C++ program to add three numbers2____56

// C++ program to add three numbers2____30// algorithm7 namespace0

________số 8

// C++ program to add three numbers2namespace3

// C++ program to add three numbers2namespace5

// C++ program to add three numbers2namespace7

________số 8

// C++ program to add three numbers2std;0

// C++ program to add three numbers2____30std;3

std;4std;5

________số 8

// C++ program to add three numbers2std;8 std;9

 0

 

 1

C




 2

 3

 

 4

 

int // C++ program to add three numbers0

// C++ program to add three numbers1

 

// C++ program to add three numbers2 9

// C++ program to add three numbers2int // C++ program to add three numbers9

 

// C++ program to add three numbers2// with the help of above designed2

// C++ program to add three numbers2int // with the help of above designed5

 

// C++ program to add three numbers2____28

// C++ program to add three numbers2____101// C++ program to add three numbers02// algorithm1// C++ program to add three numbers04

// C++ program to add three numbers2____106____102// C++ program to add three numbers08// C++ program to add three numbers09

// C++ program to add three numbers2____101// C++ program to add three numbers02// C++ program to add three numbers13// C++ program to add three numbers14

 

// C++ program to add three numbers2____101// C++ program to add three numbers02#include 2// C++ program to add three numbers04

// C++ program to add three numbers2____106____102// C++ program to add three numbers08// C++ program to add three numbers24

// C++ program to add three numbers2// C++ program to add three numbers01// C++ program to add three numbers02// C++ program to add three numbers13// C++ program to add three numbers29

 

// C++ program to add three numbers2____101// C++ program to add three numbers02using3// C++ program to add three numbers04

// C++ program to add three numbers2____106______102// C++ program to add three numbers08// C++ program to add three numbers39

// C++ program to add three numbers2____101// C++ program to add three numbers02// C++ program to add three numbers13// C++ program to add three numbers44

 

// C++ program to add three numbers2namespace3

// C++ program to add three numbers2namespace5

// C++ program to add three numbers2namespace7

 

// C++ program to add three numbers2std;0

// C++ program to add three numbers2____101// C++ program to add three numbers02// C++ program to add three numbers56// C++ program to add three numbers57

 

// C++ program to add three numbers2std;8 std;9

 0

Java




// C++ program to add three numbers62

// with the help of above designed

// algorithm

// C++ program to add three numbers65 // C++ program to add three numbers66

 

// C++ program to add three numbers67 // C++ program to add three numbers68

// C++ program to add three numbers2// C++ program to add three numbers70 // C++ program to add three numbers71 // C++ program to add three numbers72 // C++ program to add three numbers73

// C++ program to add three numbers2____11

// C++ program to add three numbers76

// C++ program to add three numbers77// with the help of above designed2

// C++ program to add three numbers77int // C++ program to add three numbers81// C++ program to add three numbers82// algorithm2

// C++ program to add three numbers76

// C++ program to add three numbers77// C++ program to add three numbers86

// C++ program to add three numbers77// C++ program to add three numbers88

// C++ program to add three numbers77// C++ program to add three numbers90

// C++ program to add three numbers91// C++ program to add three numbers92// C++ program to add three numbers93 // C++ program to add three numbers94// C++ program to add three numbers95

// C++ program to add three numbers77

// C++ program to add three numbers76// C++ program to add three numbers4

// C++ program to add three numbers77// C++ program to add three numbers6

// C++ program to add three numbers77// with the help of above designed02______31// C++ program to add three numbers04

// C++ program to add three numbers77int // with the help of above designed07

// C++ program to add three numbers76

// C++ program to add three numbers76// with the help of above designed10

// C++ program to add three numbers77// with the help of above designed12

// C++ program to add three numbers77// with the help of above designed02______37 // with the help of above designed16

// C++ program to add three numbers77// with the help of above designed02______42// C++ program to add three numbers04

// C++ program to add three numbers77int // with the help of above designed23

// C++ program to add three numbers77// with the help of above designed02______37 // with the help of above designed27

// C++ program to add three numbers77// with the help of above designed02____53____104

// C++ program to add three numbers77int // with the help of above designed34

// C++ program to add three numbers77// with the help of above designed02______37 // with the help of above designed38

// C++ program to add three numbers76

// C++ program to add three numbers77namespace3

// C++ program to add three numbers77namespace5

// C++ program to add three numbers77namespace7

// C++ program to add three numbers77// with the help of above designed02____248

// with the help of above designed49// with the help of above designed50

// C++ program to add three numbers2 0

 0

 

// with the help of above designed54

Python3




// with the help of above designed55

// with the help of above designed56

// with the help of above designed57

 

 

// with the help of above designed58 // with the help of above designed59// C++ program to add three numbers92______192 // with the help of above designed62// with the help of above designed63

 

// C++ program to add three numbers2____265

// C++ program to add three numbers2____267

// C++ program to add three numbers2_______269____192 // with the help of above designed71// C++ program to add three numbers92 // with the help of above designed73// C++ program to add three numbers92 // C++ program to add three numbers82

 

// C++ program to add three numbers2____277

// C++ program to add three numbers2// with the help of above designed79 // C++ program to add three numbers92 // C++ program to add three numbers82

 

// C++ program to add three numbers2____283

// C++ program to add three numbers2______269// C++ program to add three numbers92 int// C++ program to add three numbers02// with the help of above designed89// C++ program to add three numbers02// algorithm1// with the help of above designed92

 

// C++ program to add three numbers2______271______192 int// C++ program to add three numbers02// with the help of above designed89// C++ program to add three numbers02#include 2// with the help of above designed92

 

// C++ program to add three numbers2______273// C++ program to add three numbers92 int// C++ program to add three numbers02// with the help of above designed89// C++ program to add three numbers02using3// with the help of above designed92

 

// C++ program to add three numbers2____312

// C++ program to add three numbers2____314

// C++ program to add three numbers2_______279 // C++ program to add three numbers92 // with the help of above designed69// algorithm19 // with the help of above designed71// algorithm19 // with the help of above designed73

 

// C++ program to add three numbers2____324

// C++ program to add three numbers2______326// C++ program to add three numbers02// algorithm28// algorithm29// with the help of above designed79// algorithm31

Đầu ra

Enter the 1st number: 0
Enter the 2nd number: 0
Enter the 3rd number: -1577141152

Sum of the 3 numbers is: -1577141152

Một vấn đề, nhiều giải pháp. Giải pháp cho một thuật toán có thể có hoặc không thể có nhiều hơn một. Điều đó có nghĩa là trong khi thực hiện thuật toán, có thể có nhiều hơn một phương pháp để thực hiện nó. Ví dụ trong bài toán trên để cộng 3 số thì tổng có thể tính bằng nhiều cách như

  • + toán tử
  • Toán tử khôn ngoan
  • . vân vân

Làm thế nào để phân tích một thuật toán?

Để một thuật toán tiêu chuẩn tốt, nó phải hiệu quả. Do đó hiệu quả của một thuật toán phải được kiểm tra và duy trì. Nó có thể ở hai giai đoạn

  1. Phân tích tiên nghiệm. “Priori” có nghĩa là “trước”. Do đó, phân tích tiên nghiệm có nghĩa là kiểm tra thuật toán trước khi thực hiện. Trong đó, thuật toán được kiểm tra khi nó được viết dưới dạng các bước lý thuyết. Tính hiệu quả của thuật toán này được đo bằng cách giả định rằng tất cả các yếu tố khác, chẳng hạn như tốc độ bộ xử lý, là không đổi và không ảnh hưởng đến việc triển khai. Điều này thường được thực hiện bởi người thiết kế thuật toán. Phân tích này độc lập với loại phần cứng và ngôn ngữ của trình biên dịch. Nó đưa ra câu trả lời gần đúng cho độ phức tạp của chương trình
  2. Phân tích sau. “Posterior” có nghĩa là “sau”. Do đó, phân tích Hậu nghiệm có nghĩa là kiểm tra thuật toán sau khi thực hiện. Trong trường hợp này, thuật toán được kiểm tra bằng cách triển khai nó bằng bất kỳ ngôn ngữ lập trình nào và thực thi nó. Phân tích này giúp có được báo cáo phân tích thực tế và thực tế về tính chính xác [đối với mọi đầu vào có thể có nếu nó hiển thị/trả về đầu ra chính xác hay không], không gian cần thiết, thời gian tiêu thụ, v.v. Nghĩa là, nó phụ thuộc vào ngôn ngữ của trình biên dịch và loại phần cứng được sử dụng

Độ phức tạp của thuật toán là gì và làm thế nào để tìm thấy nó?

Một thuật toán được định nghĩa là phức tạp dựa trên lượng Không gian và Thời gian mà nó tiêu thụ. Do đó, Độ phức tạp của một thuật toán đề cập đến thước đo Thời gian mà nó sẽ cần để thực thi và nhận được đầu ra như mong đợi và Không gian mà nó sẽ cần để lưu trữ tất cả dữ liệu [đầu vào, dữ liệu tạm thời và đầu ra]. Do đó, hai yếu tố này xác định hiệu quả của một thuật toán.
Hai yếu tố của Độ phức tạp của thuật toán là.

  • Yếu tố thời gian. Thời gian được đo bằng cách đếm số lượng thao tác chính như so sánh trong thuật toán sắp xếp
  • Yếu tố không gian. Dung lượng được đo bằng cách đếm dung lượng bộ nhớ tối đa mà thuật toán yêu cầu để chạy/thực thi

Do đó độ phức tạp của một thuật toán có thể được chia thành hai loại

1. Độ phức tạp không gian. Độ phức tạp không gian của thuật toán đề cập đến dung lượng bộ nhớ mà thuật toán yêu cầu để lưu trữ các biến và nhận kết quả. Điều này có thể dành cho đầu vào, hoạt động tạm thời hoặc đầu ra.  

Cách tính Độ phức tạp của không gian?
Độ phức tạp của không gian của thuật toán được tính bằng cách xác định 2 thành phần sau.
 

  • Phần cố định. Điều này đề cập đến không gian chắc chắn được yêu cầu bởi thuật toán. Ví dụ: biến đầu vào, biến đầu ra, kích thước chương trình, v.v.
  • Phần biến. Điều này đề cập đến không gian có thể khác nhau dựa trên việc triển khai thuật toán. Ví dụ: các biến tạm thời, cấp phát bộ nhớ động, không gian ngăn xếp đệ quy, v.v.
    Do đó, độ phức tạp không gian S[P] của bất kỳ thuật toán P nào là S[P] = C + SP[I], trong đó C là phần cố định và S[I] là phần biến của thuật toán. .

Ví dụ. Hãy xem xét thuật toán dưới đây cho Tìm kiếm tuyến tính

Bước 1. BẮT ĐẦU
Bước 2. Lấy n phần tử của mảng trong arr và số cần tìm trong x
Bước 3. Bắt đầu từ phần tử ngoài cùng bên trái của mảng[] và lần lượt so sánh x với từng phần tử của mảng[]
Bước 4. Nếu x khớp với một phần tử, In True.
Bước 5. Nếu x không khớp với bất kỳ phần tử nào, In Sai.
Bước 6. END
Ở đây có 2 biến arr[] và x, trong đó arr[] là phần biến của n phần tử và x là phần cố định. Do đó S[P] = 1+n. Vì vậy, độ phức tạp của không gian phụ thuộc vào n[số phần tử]. Bây giờ, không gian phụ thuộc vào kiểu dữ liệu của các biến và kiểu hằng nhất định và nó sẽ được nhân lên tương ứng.

2. Thời gian phức tạp. Độ phức tạp về thời gian của một thuật toán đề cập đến lượng thời gian mà thuật toán cần để thực hiện và nhận được kết quả. Điều này có thể dành cho các hoạt động bình thường, câu lệnh if-else có điều kiện, câu lệnh vòng lặp, v.v.

Các thuật toán trong Python là gì?

Khoa học dữ liệu thực tế sử dụng Python . Các thuật toán thường được tạo độc lập với các ngôn ngữ cơ bản, tôi. e. một thuật toán có thể được thực hiện bằng nhiều ngôn ngữ lập trình. a step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output. Algorithms are generally created independent of underlying languages, i.e. an algorithm can be implemented in more than one programming language.

4 loại thuật toán là gì?

Giới thiệu về các loại thuật toán . thuật toán tham lam. thuật toán đệ quy. thuật toán quay lui. Brute Force algorithm. Greedy algorithm. Recursive algorithm. Backtracking algorithm.

Làm thế nào để học các thuật toán trong Python?

6 Khóa học tốt nhất để học cấu trúc dữ liệu và thuật toán với Python năm 2022 .
Python cho cấu trúc dữ liệu, thuật toán và phỏng vấn. .
Thuật toán và cấu trúc dữ liệu trong Python [Khóa học tốt nhất của Udemy].
LeetCode trong Python. 50 câu hỏi phỏng vấn viết mã thuật toán. .
Cấu trúc dữ liệu cho các cuộc phỏng vấn viết mã bằng Python [Giáo dục]

5 loại thuật toán là gì?

Có nhiều loại thuật toán nhưng thuật toán cơ bản và quan trọng nhất mà bạn phải thảo luận trong bài viết này. .
Thuật toán vét cạn. Đây là loại thuật toán cơ bản nhất và đơn giản nhất. .
thuật toán đệ quy. .
Thuật toán ngẫu nhiên. .
thuật toán sắp xếp. .
thuật toán tìm kiếm. .
thuật toán băm

Chủ Đề