Thuật toán dòng chảy tối đa và bài toán cắt nhỏ nhất

Dòng chảy trên đồ thị có hướng Xét một đồ thị có hướng \( G = (V, E) \), trong đó mỗi cạnh được gán một giá trị gọi là dung lượng. Hai đỉnh đặc biệt \( S \) (nguồn) và \( T \) (đích) được xác định trước. Mục tiêu là tìm dòng chảy lớn nhất từ \( S \) đến \( T \) sao cho các điều kiện sau luôn được thỏa mãn: Giới hạn dung lượng: Dòng chảy \( ...

Đăng vào ngày 9 tháng 9 lúc 05:29

Phát hiện Deadlock bằng Sắp xếp Topo trong Đồ thị Phân bổ Tài nguyên

Trong hệ điều hành, deadlock xảy ra khi các tiến trình tranh chấp tài nguyên và chờ đợi lẫn nhau, dẫn đến trạng thái không thể tiếp tục mà không có sự can thiệp từ bên ngoài. Để xác định sự tồn tại của deadlock, mô hình hóa bài toán bằng đồ thị phân bổ tài nguyên và áp dụng thuật toán sắp xếp topo là phương pháp hiệu quả.Đồ thị này bao gồm hai ...

Đăng vào ngày 2 tháng 9 lúc 00:43

Kỹ thuật Monte Carlo trong phân tích dữ liệu mạng xã hội quy mô lớn

Tổng quan về phương pháp Monte Carlo trong phân tích mạng xã hội Phân tích mạng xã hội (Social Network Analysis - SNA) tập trung vào việc nghiên cứu cấu trúc, đặc điểm và hành vi tương tác giữa các cá thể trong một hệ thống. Với sự bùng nổ của dữ liệu từ các nền tảng số, các phương pháp phân tích truyền thống thường gặp khó khăn về khả năng mở ...

Đăng vào ngày 31 tháng 7 lúc 04:01

Tối ưu hóa xây dựng đồ thị bằng cấu trúc dữ liệu

Tối ưu hóa xây dựng đồ thị bằng cấu trúc dữ liệu Trong một số trường hợp, chúng ta cần nối tất cả các đỉnh có chỉ số trong đoạn [L, R] với tất cả các đỉnh có chỉ số trong đoạn [L', R']. Nếu thực hiện trực tiếp sẽ dẫn đến độ phức tạp O(n²m). Do đó, chúng ta cần phân chia đoạn thành các khối nhỏ để xử lý thống nhất. Chúng ta cần xây dựng một cây ...

Đăng vào ngày 22 tháng 7 lúc 07:32

Kỹ Thuật Quy Hoạch Động Trong Lý Thuyết Trò Chơi

Gỡ rối tư duy về quy hoạch động博弈 Lý thuyết trò chơi kết hợp với quy hoạch động (DP) là một chủ đề nâng cao thường gặp trong các bài toán tối ưu hóa có tính đối kháng. Trong mô hình này, hai hoặc nhiều người tham gia thực hiện các lượt đi luân phiên. Mục tiêu cuối cùng của mỗi bên đều là đạt được điều kiện thắng lợi, giả định rằng tất cả ngườ ...

Đăng vào ngày 13 tháng 7 lúc 13:25

Phân tích và giải các bài toán CF1000

A. Đếm số lượng "khoảng tốt" tối tiểu Một khoảng [x, x+1] luôn là "khoảng tốt" vì hai số liên tiếp luôn nguyên tố cùng nhau. Hơn nữa, đây cũng là khoảng tốt tối tiểu, do các khoảng đơn phần tử như [x,x] không thể là khoảng tốt (vì gcd(x,x) = x ≠ 1 nếu x > 1). Với mọi khoảng có độ dài lớn hơn 2, nó sẽ chứa ít nhất một khoảng con độ dài 2 — do đó ...

Đăng vào ngày 27 tháng 6 lúc 06:29

Cơ sở Lý thuyết Đồ thị

n lần Floyd Thuật toán Floyd tiêu chuẩn có thứ tự duyệt như sau: for (k) for (i) for (j) kq[i][j] = min(kq[i][k] + kq[k][j]) Floyd tiêu chuẩn cho ta đường đi ngắn nhất không giới hạn số cạnh. Nhưng nếu viết thành: for (i) for (j) for (k) ketqua[i][j] = min(kq[i][k] + a[k][j]) (trong đó \(ketqua\) là ma trận khởi tạo toàn giá trị vô cùng, ...

Đăng vào ngày 18 tháng 6 lúc 20:01

Tổng Quan Về Đồ Thị Hai Phía Và Kỹ Thuật Luồng Cực Đại

Lý Thuyết Phủ Đỉnh Và Ghép Cặp Trong Đồ Thị Hai Phía Mối quan hệ giữa phủ đỉnh cực tiểu và ghép cặp cực đại là một nền tảng quan trọng. Theo định lý Konig, trong đồ thị hai phía, số lượng đỉnh cần để phủ tất cả các cạnh bằng đúng số lượng cạnh lớn nhất có thể chọn sao cho không có hai cạnh nào chung đỉnh. Để tìm tập hợp đỉnh cụ thể cho bài toán ...

Đăng vào ngày 15 tháng 6 lúc 05:07

Các bài toán NOI 2026 - Ghi chú giải bài

A. [QOJ5099] Đường hành hương (1) Giải bài toán bằng cách sử dụng định lý tổ hợp và thuật toán Ex-Lucas để tính toán hiệu quả. Công thức tổ hợp được biểu diễn dưới dạng tổng các tổ hợp chập i của 2n phần tử, với điều kiện i > n. Độ phức tạp thời gian là O(ω(p)log p), trong đó ω(p) là số lượng số nguyên tố nhỏ hơn p. #include<bits/stdc++.h&g ...

Đăng vào ngày 11 tháng 6 lúc 05:00

Giải pháp cho các bài toán lập trình từ ABC369

Bài A: Đếm số phần tử có thể chèn giữa hai số Nếu hai số A và B khác nhau, kiểm tra xem hiệu của chúng có chẵn hay không. Nếu chẵn, có thể chèn một số ở giữa → tổng cộng 3 số. Nếu lẻ, chỉ có thể giữ nguyên hai đầu mút → 2 số. Trường hợp A == B, chỉ có duy nhất một giá trị. #include <bits/stdc++.h> using namespace std; int main() { in ...

Đăng vào ngày 10 tháng 6 lúc 04:51