Skip to content
Showing 1-50 of 56 items.
@renovate
Admin 29/10/2021 10:50
Công thức toán và tính chất số học - Những thứ kỳ lạ trong Tin học (Phần 2)

III. Các công thức và hàm Toán học quan trọng trong Tin học (tiếp) 4. Dãy số Harmonic (Harmonic Series) 4.1. Định nghĩa Dãy số Harmonic là dãy số có thể nhiều bạn đã khá quen thuộc. Trong Toán học, đây là một dãy tổng vô hạn các số phân biệt: ∑n=1∞1n=1+12+13+14+⋯\sum_{n = 1}^\infty\frac{1}{n}=1+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\cdots n=1∑∞​n1​=1+21​+31​+41​+⋯Tổng của dãy số này có cận trên là...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 08/11/2021 15:40
Toán học tổ hợp

II. Các dãy số và công thức quan trọng 1. Dãy Fibonaci Dãy số Fibonaci được xác định bởi công thức sau: {f0=0.f1=1.fi=fi−1+fi−2,với i≥2.\begin{cases}f_0 = 0.\\f_1 = 1.\\ f_i = f_{i - 1} + f_{i - 2},&\text{với }i \ge 2.\end{cases} ⎩⎪⎪⎨⎪⎪⎧​f0​=0.f1​=1.fi​=fi−1​+fi−2​,​với i≥2.​Một số phần tử đầu tiên của dãy Fibonaci là: 0,1,1,2,3,5,8,...0, 1, 1, 2, 3, 5, 8,...0,1,1,2,3,5,8,... Ngoài ra, số...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 10/11/2021 16:00
Quy hoạch động trên cây

I. Giới thiệu Quy hoạch động trên cây (Dp On Tree\text{Dp On Tree}Dp On Tree), là một dạng bài quy hoạch động đặc biệt, sử dụng để giải các bài toán quy hoạch động trên đồ thị có dạng cây. Ở dạng bài này, thường sẽ phải tìm công thức truy hồi cho các nút trên cây dựa vào các nút con của nó. Khi đặt hàm mục tiêu, thường sẽ xuất hiện 111 trạng thái là iii, có nghĩa là chúng ta đang...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 22/11/2021 13:10
Một số ứng dụng nâng cao của cây DFS (phần 1)

I. Cây DFS và bài toán định chiều đồ thị 1. Phân loại các cung trên cây DFS\text{DFS}DFS Trong quá trình DFS\text{DFS}DFS duyệt đồ thị, với mỗi đỉnh uuu ta có được đỉnh par[u]\text{par}[u]par[u] là đỉnh cha của đỉnh uuu trên đường đi. Nếu xây dựng đồ thị con gồm các cạnh có dạng (par[u],u),(\text{par}[u], u),(par[u],u), ta sẽ thu được một cây, gọi là cây DFS\text{DFS}DFS. Hình vẽ dưới đây biểu...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 24/11/2021 15:30
Một số ứng dụng nâng cao của cây DFS (phần 2)

III. Bài toán tìm thành phần liên thông mạnh - giải thuật Tarjan 1. Định nghĩa thành phần liên thông mạnh Đối với đồ thị G=(V,E)G=(V, E)G=(V,E) có hướng, ta có ba định nghĩa về tính liên thông: GGG được gọi là liên thông mạnh (strongly connected) nếu với mọi cặp đỉnh phân biệt (u,v)(u, v)(u,v), ta có uuu đến được vvv và vvv đến được uuu. GGG được gọi là liên thông yếu (weakly connected) nếu...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 20/12/2021 13:20
Đếm ước của một số trong O(N^1/3)

I. Đặt vấn đề Chắc hẳn, ai trong chúng ta cũng đã quá quen thuộc với bài toán đếm số ước nguyên dương của nnn. Giải thuật thông thường nhất mà mọi người thường sử dụng là giải thuật O(n),O(\sqrt{n}),O(n​), dựa trên một nhận định rằng nếu như số nnn có một ước là i (1≤i≤n)i \ (1 \le i \le \sqrt{n})i (1≤i≤n​) thì nó cũng sẽ có một ước nữa là ni (n≤ni≤n)\frac{n}{i} \...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 24/12/2021 14:00
Bài toán tìm kiếm và các phương pháp giải thông dụng

I. Mở đầu về bài toán tìm kiếm 1. Tìm kiếm - một khái niệm quen thuộc trong cuộc sống Có bao giờ bạn phải đau đầu vì để quên chiếc ví ở đâu đó trong nhà mà tìm mãi không thấy? Hay việc các bạn nữ luôn không thể nào tìm thấy bộ quần áo phù hợp để lên phố mặc dù số lượng trang phục xếp nặng trĩu trong tủ quần áo? Cuộc sống chúng ta luôn gắn liền với việc tìm kiếm. Từ một...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 28/12/2021 14:50
Tìm kiếm 5.2: Giải thuật Tìm kiếm nhị phân nâng cao

I. Bài toán Tìm kiếm nhị phân tổng quát Ở bài viết trước, mình đã giới thiệu tới các bạn những khái niệm cơ bản nhất về bài toán tìm kiếm trong Tin học, cũng như giới thiệu về hai giải thuật Tìm kiếm tuần tự và Tìm kiếm nhị phân. Trong bài viết này, mình sẽ tập trung nói về giải thuật Tìm kiếm nhị phân, nhưng sẽ là áp dụng trong một lớp...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 28/12/2021 15:30
Giải thuật Tìm kiếm nhị phân nâng cao

I. Bài toán Tìm kiếm nhị phân tổng quát Ở bài viết trước, mình đã giới thiệu tới các bạn những khái niệm cơ bản nhất về bài toán tìm kiếm trong Tin học, cũng như giới thiệu về hai giải thuật Tìm kiếm tuần tự và Tìm kiếm nhị phân. Trong bài viết này, mình sẽ tập trung nói về giải thuật Tìm kiếm nhị phân, nhưng sẽ là áp dụng trong một lớp...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 05/01/2022 14:50
Giới thiệu một số hàm tìm kiếm có sẵn trong STL C++

I. Tổng quan về thư viện STL C++ Đã là dân lập trình, đặc biệt lại sử dụng ngôn ngữ C++, thì chắc chắn không ai trong số chúng ta không biết đến thư viện Template chuẩn C++ (Standard Template Library). Thư viện này cung cấp rất nhiều thứ hỗ trợ sẵn cho lập trình viên trong quá trình làm việc, trong số đó có những thuật toán cơ bản. Một trong số những thuật toán mà STL C++ hỗ trợ là...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 10/01/2022 14:50
Quay lui (Backtracking) (Phần 1)

I. Lời mở đầu Chắc hẳn, ai trong số chúng ta khi bắt đầu học Tin học đều nghe qua khái niệm: Cấu trúc dữ liệu (Data Structures) và Giải thuật (Algorithm). Không sai, đây chính là hai chủ đề lớn và vô cùng quan trọng trong Lập trình thi đấu nói riêng và trong Công nghệ thông tin nói chung. Nhà khoa học máy tính Niklaus Wirth đã từng nói một câu rất nổi tiếng:...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 17/01/2022 15:50
Nhánh và Cận (Branch and Bound)

I. Tổng quan 1. Giới thiệu phương pháp Trong lập trình cũng như trong thực tế, chắc hẳn các bạn đều đã gặp những bài toán với yêu cầu tìm kết quả tốt nhất thỏa mãn một hoặc một số điều kiện nào đó. Sự thật là chúng ta gặp các bài toán này khá thường xuyên, thậm chí vô cùng thực tiễn, chẳng hạn như: Tìm cách trả số tiền TTT với nnn...

Algorithm Viblo Viblo Algorithm
@renovate
Admin 19/01/2022 17:00
Tham lam (Greedy Method)

I. Tổng quan 1. Giới thiệu phương pháp Trong bài viết trước, mình đã giới thiệu tới các bạn về giải thuật Nhánh và Cận để giải bài toán tối ưu (nhấn vào đây để đọc lại bài viết). Mặc dù phương pháp Nhánh và Cận đã cải tiến từ phương pháp Quay lui nhằm loại bỏ đi nhiều nhánh nghiệm không tốt, nhưng thực tế thì việc đánh giá các nghiệm...

Algorithm Viblo Viblo Algorithm