Thiết kế và phân tích cheat sheet thuật toán

đồ thị của. V. đỉnh và. E. các cạnh Đồ thị của. V. đỉnh và. E. Các cạnh Mảng n phần tử đã sắp xếp Mảng

Độ phức tạp thời gian Trung bình O(log(n)) O(n)

tệ nhất O(. E. +. V. ) Ô(. E. +. V. ) O(log(n)) O(n)

Độ phức tạp không gian Tồi tệ nhất O(. V. ) Ô(. V. ) O(1) O(1)

Vẽ đồ thị với. V. đỉnh và. E. cạnh

Ô((. V. +. E. ) nhật ký. V. )

Ô((. V. +. E. ) nhật ký. V. )

Ô(. V. )

Đường đi ngắn nhất của Dijkstra, sử dụng mảng chưa sắp xếp làm hàng đợi ưu tiên

Vẽ đồ thị với. V. đỉnh và. E. cạnh

Ô(. V. ^2)

Ô(. V. ^2)

Ô(. V. )

Con đường ngắn nhất của Bellman-Ford

Vẽ đồ thị với. V. đỉnh và. E. cạnh

Ô(. V. E. )

Ô(. V. E. ) Tổng hợp bởi Ref

Ô(. V. ). JITENDRA KUMAR PATEL. . http. //bigocheatsheet. com/

Tìm kiếm theo chiều sâu (DFS) Tìm kiếm theo chiều rộng (BFS) Tìm kiếm nhị phân Tuyến tính (Brute Force) Đường đi ngắn nhất theo Dijkstra, sử dụng Min-heap làm hàng đợi ưu tiên

Cấu trúc dữ liệu

thuật toán sắp xếp

Quicksort Mergesort Heapsort Sắp xếp bong bóng Chèn Sắp xếp Chọn Sắp xếp Nhóm Sắp xếp Cơ số Sắp xếp

Dữ liệu Thời gian Độ phức tạp Cấu trúc Mảng tốt nhất Mảng O(n log(n)) Mảng O(n log(n)) Mảng O(n log(n)) Mảng O(n) Mảng O(n) Mảng O(n^2) Mảng

Trường hợp xấu nhất Độ phức tạp không gian phụ Trung bình O(n log(n)) O(n log(n)) O(n log(n)) O(n^2) O(n^2) O(n^2) O(

Tồi tệ nhất O(n^2) O(n log(n)) O(n log(n)) O(n^2) O(n^2) O(n^2) O(n^2) O(nk

Tồi tệ nhất O(n) O(n) O(1) O(1) O(1) O(1) O(nk) O(n+k)

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

Mảng cơ bản Mảng động Danh sách liên kết đơn Danh sách liên kết kép Danh sách bỏ qua Bảng băm Cây tìm kiếm nhị phân Cây Cartresian Cây B-Tree Cây đỏ-đen Cây Splay Cây AVL

Độ phức tạp thời gian Tìm kiếm lập chỉ mục trung bình O(1) O(n) O(1) O(n) O(n) O(n) O(n) O(n) O(log(n)) O(log(n)

Chèn O(n) O(1) O(1) O(log(n)) O(1) O(log(n)) O(log(n)) O(log(n)) O(log(n)

Xóa O(n) O(1) O(1) O(log(n)) O(1) O(log(n)) O(log(n)) O(log(n)) O(log(n)

Lập chỉ mục tệ nhất O(1) O(1) O(n) O(n) O(n) O(n) O(log(n)) O(log(n)) O(log(n))

Độ phức tạp không gian Tìm kiếm tồi tệ nhất O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(n) O(log(n)) O(log(n))

Phân tích thuật toán là một phần quan trọng của lý thuyết độ phức tạp tính toán, cung cấp ước tính lý thuyết cho các tài nguyên cần thiết của thuật toán để giải quyết một vấn đề tính toán cụ thể. Phân tích thuật toán là việc xác định lượng tài nguyên thời gian và không gian cần thiết để thực hiện nó

Tại sao Phân tích thuật toán lại quan trọng?

  • Để dự đoán hành vi của một thuật toán mà không thực hiện nó trên một máy tính cụ thể
  • Sẽ thuận tiện hơn nhiều khi có các phép đo đơn giản về hiệu quả của thuật toán hơn là thực hiện thuật toán và kiểm tra hiệu quả mỗi khi một tham số nhất định trong hệ thống máy tính cơ bản thay đổi
  • Không thể dự đoán hành vi chính xác của một thuật toán. Có quá nhiều yếu tố ảnh hưởng
  • Do đó, phân tích chỉ là một xấp xỉ;
  • Quan trọng hơn, bằng cách phân tích các thuật toán khác nhau, chúng ta có thể so sánh chúng để xác định thuật toán tốt nhất cho mục đích của mình

Các loại phân tích thuật toán

  1. Trường hợp tốt nhất
  2. Trường hợp xấu nhất
  3. trường hợp trung bình

Khái niệm cơ bản về phân tích thuật toán

  1. Thuật toán là gì và tại sao việc phân tích nó lại quan trọng?
  2. Phân tích thuật toán. Tập 1 (Phân tích tiệm cận)
  3. Phân tích thuật toán. Bộ 2 (Trường hợp xấu nhất, trung bình và tốt nhất)
  4. Phân tích thuật toán. Bộ 3 (Ký hiệu tiệm cận)
  5. Phân tích thuật toán. Phần 4 (Phân tích các vòng lặp)
  6. Phân tích thuật toán. Set 4 (Giải quyết lặp lại)
  7. Phân tích thuật toán. Tập 5 (Giới thiệu phân tích khấu hao)

Ký hiệu tiệm cận

  1. Phân tích thuật toán. Phân tích Big-O
  2. Sự khác biệt giữa Big Oh, Big Omega và Big Theta
  3. Ví dụ về phân tích Big-O
  4. Sự khác biệt giữa ký hiệu O lớn và dấu ngã
  5. Phân tích thuật toán. Ký hiệu Big – Ω (Big- Omega)
  6. Phân tích thuật toán. Ký hiệu Big – Θ (Theta lớn)

Một số chủ đề nâng cao

  1. Các loại lớp phức tạp. P, NP, CoNP, NP cứng và NP hoàn thành
  2. Độ phức tạp thời gian chạy của thuật toán sắp xếp dựa trên so sánh có thể nhỏ hơn N logN không?
  3. Tại sao việc truy cập một phần tử Mảng mất O(1) thời gian?
  4. Hiệu quả về thời gian của các hoạt động push(), pop(), isEmpty() và peek() của Stacks là bao nhiêu?

Bằng chứng phức tạp

  1. Chứng minh rằng vấn đề Quyết định nhóm là NP-Complete
  2. Chứng minh rằng Tập độc lập trong lý thuyết đồ thị là NP Complete
  3. Chứng minh rằng một vấn đề bao gồm Nhóm và Tập hợp độc lập là NP Complete
  4. Chứng minh rằng Đồ thị con dày đặc là NP đầy đủ bằng cách tổng quát hóa
  5. Chứng minh rằng Sparse Graph là NP-Complete

Nếu bạn thích GeeksforGeeks và muốn đóng góp, bạn cũng có thể viết một bài báo và gửi bài viết của mình tới donate@geeksforgeeks. tổ chức. Xem bài viết của bạn xuất hiện trên trang chính của GeeksforGeeks và trợ giúp các Geeks khác

Vui lòng viết bình luận nếu bạn thấy bất cứ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề thảo luận ở trên