Chuyến đi vượt thời gian: Chapter VI (Temporal Reconstruction)
Xem PDFSau khi hoàn thành Temporal Physics ở Chapter V, , và vẫn đứng trước cỗ máy thời gian.
Đột nhiên, toàn bộ hệ thống bật sáng.
TEMPORAL ARCHIVE DETECTED
ORIGIN: USSR — 1983
DESTINATION: USSR — 1963
NODE 01 — ACTIVE
NODE 02 — UNKNOWN
NODE 03 — ACTIVE
NODE 04 — CURRENT LOCATION
:
"1963?"
:
"Nhưng chúng ta đang ở 1986."
nhìn dòng dữ liệu.
"Tín hiệu được tạo ra năm 1983, nhưng đích đến lại là 1963."
Một dòng chữ mới xuất hiện:
TEMPORAL ANCHOR DETECTED
YEAR: 1963
NODE: 01
:
"Node 01?"
:
"Có vẻ như đây là nơi mọi thứ bắt đầu."
:
"Nhưng tại sao tín hiệu từ 1983 lại gửi ngược về 1963?"
Không ai trả lời.
Cỗ máy thời gian đột nhiên phát ra âm thanh cảnh báo.
TEMPORAL GATE: UNSTABLE
DESTINATION LOCKED: USSR — 1963
COUNTDOWN: 10
:
"Khoan, nó tự khởi động kìa!"
:
"Có dừng được không?"
:
"Không."
9
8
7
Anh nhìn hai người còn lại.
"Chuẩn bị đi."
6
5
4
Cả căn phòng rung lên.
3
2
1
Một luồng sáng bao phủ toàn bộ căn phòng.
USSR — 1963
mở mắt.
Không còn Chernobyl.
Trước mặt họ là một khu nghiên cứu cũ của Liên Xô.
Trên cổng có dòng chữ:
USSR — SCIENTIFIC RESEARCH FACILITY
YEAR: 1963
:
"Chúng ta thật sự đến năm 1963 rồi."
nhìn phía sau.
Cỗ máy thời gian đã tắt hoàn toàn.
TEMPORAL GATE: CLOSED
RETURN PATH: LOCKED
CURRENT YEAR: 1963
NODE: 01
:
"Chúng ta bị kẹt rồi."
:
"Vậy thì tìm Node 01."
Ba người tiến vào khu nghiên cứu.
Người thứ tư
Sau khi đi qua một hành lang phía sau khu nghiên cứu, họ bất ngờ gặp một người khác.
:
"Khoan!"
Cả ba quay lại.
:
"Cậu là ai?"
Người kia nhìn họ vài giây.
:
"Tôi là ."
:
"Cậu làm gì ở đây?"
:
"Tôi đang tìm một thứ."
Cậu lấy ra một mảnh kim loại cũ.
Trên đó có khắc:
NODE 01
:
"Cậu cũng đang tìm Node 01?"
:
"Đúng."
:
"Vậy đi cùng chúng tôi."
:
"Các cậu biết nó ở đâu?"
:
"Chưa."
"Nhưng chúng ta đang tìm cùng một thứ."
Bốn người tiếp tục tiến sâu vào khu nghiên cứu.
NODE 01
Cuối hành lang là một căn phòng điều khiển.
Bên trong chỉ có một chiếc máy tính cũ.
đặt mảnh kim loại lên bàn.
BÍP.
Màn hình bật sáng.
TEMPORAL NODE 01
STATUS: ACTIVE
SCANNING HUMAN SIGNATURES...
FOUR HUMAN SIGNATURES DETECTED
Một dòng chữ mới xuất hiện:
TEMPORAL RECONSTRUCTION PROTOCOL
INITIALIZING...
Sau vài giây:
CAN YOU RECONSTRUCT THE PAST?
:
"Đây mới là bài kiểm tra thật sự."
Temporal Reconstruction
Node 01 mô phỏng một hệ thống tuyến tính gồm \(n\) trạng thái.
Tại thời điểm \(t\), hệ thống có vector hàng:
Hệ thống tiến hóa theo:
Trong đó \(A\) là ma trận chuyển trạng thái.
Giá trị quan sát tại thời điểm \(t\) được định nghĩa là:
Do đó:
Các phần tử của \(A\) và \(w\) được cho dưới dạng phân số.
Ma trận \(A\) thỏa mãn:
Vector quan sát thỏa mãn:
Tất cả phép tính được thực hiện modulo:
Mọi phép chia cho \(q\) được hiểu là nhân với nghịch đảo modulo của \(q\).
Cụ thể:
và:
trong đó \(q^{-1}\) là số thỏa mãn:
Đề bài đảm bảo:
nên nghịch đảo modulo của \(q\) luôn tồn tại.
Các truy vấn
Vector ban đầu \(v_0\) và ma trận \(A\) không thay đổi trong suốt quá trình.
Chỉ vector quan sát \(w\) có thể thay đổi.
Truy vấn loại 1
Dạng:
Thay vector quan sát hiện tại bằng vector có các phần tử:
Các giá trị \(b_i\) trong truy vấn mới không liên quan đến các giá trị \(b_i\) của vector quan sát ban đầu.
Truy vấn loại 2
Dạng:
Yêu cầu tính:
với vector quan sát \(w\) hiện tại.
In kết quả modulo:
Linear Recurrence
Do hệ thống có \(n\) trạng thái, dãy:
luôn thỏa mãn một truy hồi tuyến tính có bậc không vượt quá \(n\).
Tồn tại \(k\le n\) và các hệ số \(c_1,c_2,\ldots,c_k\) sao cho:
với mọi \(t\ge k\).
Các hệ số \(c_i\) và mọi phép tính trong truy hồi đều được thực hiện modulo \(MOD\).
Vì \(T\) có thể lên tới \(10^{18}\), không thể tính lần lượt từ \(x_0\) đến \(x_T\).
Có thể sử dụng Berlekamp-Massey để tìm truy hồi nhỏ nhất của dãy, sau đó sử dụng Kitamasa hoặc binary polynomial exponentiation để tính \(x_T\).
Một điểm quan trọng là \(v_0\) và \(A\) không thay đổi giữa các truy vấn.
Có thể tính trước:
với:
Sau đó, với vector quan sát \(w\) hiện tại, xây dựng:
trên các vector đã tính.
Nếu dãy quan sát thu được toàn bằng \(0\), mọi truy vấn loại \(2\) tương ứng đều có đáp án \(0\).
Độ phức tạp
Một cách giải đạt độ phức tạp:
và bộ nhớ:
Input
Dòng đầu tiên chứa ba số nguyên:
Trong đó:
- \(n\) là số trạng thái.
- \(Q\) là số truy vấn.
- \(q\) là mẫu số chung.
Dòng thứ hai chứa \(n\) số nguyên:
là vector trạng thái ban đầu:
\(n\) dòng tiếp theo, dòng thứ \(i\) chứa \(n\) số nguyên:
biểu diễn ma trận chuyển trạng thái:
Dòng tiếp theo chứa \(n\) số nguyên:
biểu diễn tử số của vector quan sát ban đầu:
\(Q\) dòng tiếp theo chứa các truy vấn.
Truy vấn loại \(1\) có dạng:
Truy vấn loại \(2\) có dạng:
Output
Với mỗi truy vấn loại \(2\), in một dòng chứa:
Constraints
- \(1\le n\le200\)
- \(1\le Q\le50\)
- \(0\le s_i\le10^{18}\)
- \(0\le a_{i,j}\le10^9\)
- \(0\le b_i\le10^9\)
- \(1\le q\le10^9\)
- \(0\le T\le10^{18}\)
- \(\gcd(q,10^9+7)=1\)
Example
Test 1
Input
2 4 1
1 0
2 1
1 1
1 2
2 5
1 3 1
2 5
2 0
Output
47
76
3
Note
Ban đầu:
và:
Vector quan sát ban đầu:
Ta có:
nên:
Do đó:
Sau truy vấn loại \(1\), vector quan sát trở thành:
Vì vậy:
Cuối cùng với \(T=0\):
Màn hình im lặng.
RECONSTRUCTION SYSTEM: READY
TEMPORAL RECONSTRUCTION
PROCESSING...
NODE 01: LOCKED
HISTORICAL DATA: INCOMPLETE
RECOVER THE PAST.
nhìn hàng loạt công thức trên màn hình.
"Lại một bài toán..."
:
"Lần này còn khó hơn cái ở Chernobyl."
:
"Nếu không khôi phục được dữ liệu thì sao?"
nhìn màn hình.
"Thì chúng ta sẽ không biết chuyện gì đã xảy ra."
Anh đặt tay lên bàn phím.
"Bắt đầu thôi."
Màn hình hiện:
TEMPORAL RECONSTRUCTION
PROCESSING...
Một dòng dữ liệu cuối cùng xuất hiện:
NODE 01: ACCESSING ARCHIVE...
YEAR: 1963
PROJECT: ██████████
NEXT RECORD: 1972
Cả bốn người nhìn nhau.
:
"Khoan..."
:
"Node 01 không phải điểm kết thúc."
:
"Mà là điểm bắt đầu."
nhìn dòng chữ NEXT RECORD: 1972.
"Vậy thì..."
Anh nhấn Enter.
ACCESS DENIED.
REQUIRED NODE: 02
Cánh cửa phía cuối phòng đột nhiên mở ra.
Bên trong là một hành lang tối.
Ở cuối hành lang, một bóng đèn đỏ đang nhấp nháy.
BÍP.
NODE 02: ACTIVE
Câu chuyện vẫn chưa kết thúc!!!!
Bình luận (1)