ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
NGUYỄN HẢI ĐĂNG
THUẬT TOÁN TỔNG HỢP MẠCH KHẢ ĐẢO ĐA NGÕ
RA KHÔNG HOÀN CHỈNH
Chuyên ngành: Kỹ thuật Điện Tử
Mã số: 60520203
LUẬN VĂN THẠC SĨ
TP. HỒ CHÍ MINH, THÁNG 1 NĂM 2019
Công trình được hoàn thành tại: Trường Đại học Bách Khoa - ĐHQG-HCM
Cán bộ hướng dẫn khoa học: TS. Trần Hoàng Linh ........................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 1: ..................................................................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 2: ..................................................................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM ngày
.................. tháng ......... năm .............
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
1 .. .. ...............
2 .............................................................................
3 .............................................................................
4 .............................................................................
5 .............................................................................
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành
sau khi luận văn đã được sữa chữa (nếu có).
CHỦ TỊCH HỘI ĐỒNG
TRƯỞNG KHOA
ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRỮỜNG ĐẠI HỌC BÁCH KHOA
Độc Lập - Tự Do - Hạnh Phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Nguyễn Hải Đăng.................................. MSHV: 1670359 ...............
Ngày, tháng, năm sinh: 09/11/1993 .................................... Nơi sinh: Tây Ninh .......
Chuyên ngành: Kỹ thuật Điện Tử ........................................Mã số: .60520203 .........
I. TÊN ĐỀ TÀI: Thuật toán tổng hợp mạch khả đảo đa ngõ ra không hoàn chỉnh...
NHIỆM VỤ VÀ NỘI DUNG: ....................................................................................
-Xây dựng được thuật toán tổng hợp mạch khả đảo tối ưu hóa về thời gian tổng hợp
-Xây dựng công cụ tổng hợp mạch dựa trên thuật toán trên ........................................
II. NGÀY GIAO NHIỆM VỤ: (Ghi theo trong QĐ giao đề tài) ...............................
IH. NGÀY HOÀN THÀNH NHIỆM VỤ: (Ghi theo trong QĐ giao đề tài).............
IV. CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): ................................
CÁN BỘ HƯỚNG DẪN
(Họ tên và chữ ký)
Tp. HCM, ngày ... tháng ... năm 20...
CHỦ NHIỆM BỘ MÔN ĐÀO TẠO
(Họ tên và chữ ký)
TRƯỞNG KHOA .
(Họ tên và chữ ký)
Luận văn thạc sĩ
i
GVHD: TS. Trần Hoàng Linh
LỜI CẢM ƠN
Lời đầu tiên, xin gửi lời cảm ơn chân thành và sâu sắc nhất đến thầy hướng dẫn
luận văn của tôi, TS. Trần Hoàng Linh. Trong suốt quá trình thực hiện đề tài này, Thầy
đã nhiệt tình giúp đỡ và hỗ trợ tôi rất nhiều về kiến thức cũng như tinh thần. Là một kỹ
sư điện tử viễn thông chưa từng nghiên cứu về các thuật toán tổng hợp mạch lượng tử,
khi nhận đề tài đã đem lại nhiều khó khăn đối với tôi. Tuy nhiên, qua các buổi thảo luận
cũng như học thêm từ các tài liệu quý giá của Thầy, đã giúp cho tôi có cái nhìn cụ thể
hơn về nhiệm vụ của đề tài và có thêm phần cảm hứng trong lĩnh vực này.
Ngoài ra, xin được gửi lời cảm ơn đến tất cả các thầy cô trong khoa Điện - Điện
Tử đã truyền thụ kiến thức và kinh nghiệm của mình để giúp tôi có thêm kiến thức về
lĩnh vực điện tử và tự tin để thực hiện đề tài.
Bên cạnh đó tôi cũng xin cảm ơn đến các anh em trong dự án của công ty phần
mềm FPT Software đã hỗ trợ công việc để tôi có thêm thời gian hoàn thành đề tài này.
Cuối cùng, xin dành lời cảm ơn chân thành đến gia đình tôi, những người đã ở
bên cạnh động viên tôi vào những lúc khó khăn nhất.
Tp Hồ Chí Minh, tháng 12 năm 2018
Nguyễn Hải Đăng
Lời cảm ơn
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
ii
GVHD: TS. Trần Hoàng Linh
TÓM TẮT LUẬN VĂN
•
Trong nhưng năm gần đây, logic khả đảo đã được thúc đẩy phát triển bởi những
nghiên cứu lý thuyết và tính ứng dụng mà nó mang lại. Đặc biệt là trong thiết kế mạch
công suất thấp và tính toán lượng tử. Với động lực đó, các nhà nghiên cứu đã phát triển
ra nhiều thuật toán tổng hợp mạch khả đảo với nhiều cách tiếp cận khác nhau như Binary
Decision Diagram (BDD), transformation-based, cycle-based,.... Một số phương pháp
tổng hợp một cách chính xác, một số dựa trên phương pháp suy nghiệm và một số khác
đáp ứng với các hàm ngõ vào.
Trong luận văn này sẽ trình bày một phương pháp tổng hợp mới dựa trên sự kết
hợp tính chất của hai phương pháp cycle-based và phương pháp hoán đổi dựa trên tính
chất hoán đổi của cổng Toffoli. Mục tiêu của sự kết hợp này là làm tăng tốc độ tổng hợp
mạch để trong thời gian ngắn nhất có thể đưa ra một mạch khả đảo đáp ứng với hàm
yêu cầu tổng hợp ở ngõ vào. Các bước tối ưu hóa về chi phí lượng tử hay độ sâu của
mạch có thể thực hiện tiếp tục ở các nghiên cứu thiếp theo.
Ngoài ra luận văn này còn đưa ra phương pháp chuyển đổi hàm khả đảo đa ngõ
ra không hoàn chỉnh sang hàm khả đảo đa ngõ ra hoàn chỉnh. Lý do phải chuyển đổi là
vì thuật toán tổng hợp vốn dựa trên phương pháp cycle-based, điều này có nghĩa là yêu
cầu ngõ vào phải là một hàm khả đảo đa ngõ ra hoàn chỉnh.
Tóm tăt luận văn
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
3
GVHD: TS. Trần Hoàng Linh
ABSTRACT
Recently, the reversible logic has been promoted by research and application
that its brings. Especially in low power chcuit design and quantum computing. With
that motivation, researchers have developed many reversible circuit synthesis
algorithms with various approaches such as Binary Decision Diagram (BDD),
transformation-based, cycle-based, and so on. Some methods synthesis are exact, some
base on heuristicc, and some rely on function representations.
This thesis will present a new synthesis method based on the combination of
properties of cycle-based method and the swap property of Toffoli gate. The goal of this
combination is increase the speed of synthesizing the chcuit so that in the shortest time
it is possible to give an reversible chcuit that meets the input function. Quantum cost
and depth of chcuit optimization can be carrid out in follow-up studies.
In addition, this thesis also offers a method of converting incomple multioutput
reversible function to complete multi-output reversible function. The reason for the
conversion is because the algorithm is based on cycle-based method, which means that
the input requirement must be a complete multi-output reversible function.
Tóm tăt luận văn
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
iv
GVHD: TS. Trần Hoàng Linh
LỜI CAM ĐOAN
Tôi tên Nguyên Hải Đăng, là học viên cao học ngành Kỹ thuật Điện Tử tại trường
Đại học Bách Khoa, thành phố Hồ Chí Minh. Tôi xin cam đoan công trình nghiên cứa
ngày là do chính tôi thực hiện trong suốt quá trình thực hiện đề tài này, các tư liệu tham
khảo sử dụng được trích dẫn từ các nguồn thực tế, uy tín và chất lượng. Kết q.uả thu
được đươc thực hiện một cách độc lập và hoàn toàn trung thực.
Tp. Hồ Chí Minh, tháng 12 năm 2018
Nguyễn Hải Đăng
Lời cam đoan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
V
GVHD: TS. Trần Hoàng Linh
MỤC LỤC
LỜI CẢM ƠN.............................................................................................................. i
TÓM TẮT LUẬN VĂN .............................................................................................. ii
ABSTRACT ................................................................................................................ iii
LỜI CAM ĐOAN ........................................................................................................ iv
MỤC LỤC .................................................................................................................... V
DANH SÁCH HÌNH VẼ............................................................................................ vii
DANH SÁCH BẢNG BIÊU ..................................................................................... viii
DANH SÁCH CÁC TỪ VIẾT TẮT ........................................................................... ix
CHUƠNG 1: MỞ ĐẦU ................................................................................................ 1
1.1. Lý do chọn đề tài ............................................................................................. 1
1.2. Mục tiêu và nhiệm vụ của luận văn ................................................................. 1
1.3. Đối tượng và phạm vi nghiên cứu ................................................................... 2
1.4. Ý nghĩa khoa học và thực tiễn ......................................................................... 2
CHUƠNG 2: TÔNG QUAN ........................................................................................ 4
2.1. .............................................................................................................
Các khái niệm cơ bản .................................................................................................. 4
2.1.1. Hàm khả đảo và mạch .............................................................................. 4
2.1.2. Cổng khả đảo ........................................................................................... 5
2.1.3. Đường Ancilla và Garbage ...................................................................... 6
2.1.4. Chi phí lượng tử ....................................................................................... 6
2.2. Các phương pháp tổng hợp mạch hiện tại ....................................................... 7
2.2.1. Phương pháp transformation-based ......................................................... 7
2.2.2. Phương pháp cycle-based ........................................................................ 8
2.2.3. Phương pháp graphical [7] ..................................................................... 10
2.2.4. Phương pháp tối ưu hóa mạch sửu dụng template matching ................. 16
2.2.5. Phương pháp giảm chi phí trong mạch khả đảo Toffoli ........................ 16
CHUƠNG 3: CHUYỂN ĐÔI HÀM KHẢ ĐẢO KHÔNG HOÀN CHỈNH .............. 17
3.1. Trường hợp số ngõ vào bằng số ngõ ra ......................................................... 17
Mục lục
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
vi
GVHD: TS. Trần Hoàng Linh
3.1.1. Phương pháp chuyển đổi ........................................................................ 17
3.1.2. Ví dụ ....................................................................................................... 18
3.2. Trường hợp số ngõ vào nhỏ hơn số ngõ ra ................................................... 20
3.2.1. Phương pháp chuyển đổi ........................................................................ 20
3.2.2. Ví dụ ....................................................................................................... 21
3.3. Trường hợp số ngõ vào lớn hơn số ngõ ra .................................................... 23
3.3.1. Phương pháp chuyển đổi ........................................................................ 23
3.3.2. Ví dụ ....................................................................................................... 23
CHƯƠNG 4: THUẬT TOÁN TÔNG HỢP MẠCH KHẢ ĐẢO............................... 27
4.1. Phân tách k-cycles ......................................................................................... 27
4.2. Tương quan giữa 2-cycles có hamming bằng 1 với cổng Toffoli ................. 28
4.3. Tối ưu hóa mạch bằng template .................................................................... 29
4.4. Thuật toán tổng hợp mạch cycle-swap.......................................................... 34
4.5. Ví dụ .............................................................................................................. 35
4.6. Kết quả thí nghiệm ........................................................................................ 39
CHƯƠNG 5: KẾT LUẬN .......................................................................................... 45
5.1. Kết luận ......................................................................................................... 45
5.2. Hướng phát triển ........................................................................................... 45
Tài Liệu Tham Khảo .................................................................................................. 47
PHỤ LỤC: BẢNG CHÚ THÍCH CÁC MẤU THỬ .................................................. 49
Mục lục
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
vii
GVHD: TS. Trần Hoàng Linh
DANH SÁCH HÌNH VẼ
Hình 2-1 Mạch khả đảo với cổng NOT, CNOT và Toffoli
Hình 2-2 Cổng NOT
Hình 2-3 a) cổng CNOT, b) cổng CNOT âm
Hình 2-4 a) cổng Toffoli, b) cổng Toffoli bán âm, c) cổng Toffoli âm
Hình 2-5 Cổng multicontrol Toffoli
Hình 2-6 4 cổng Toffoli cho cùng một vị trí XOR
Hình 2-7 Mạch khả đảo của hàm đã cho
Hình 4-1 Anh minh họa template 1
Hình 4-2 Ảnh minh họa template 3
Hình 4-3 Anh minh họa template 4
Hình 4-4 Anh minh họa template 5
Hình 4-5 Anh minh họa template 6
Hình 4-6 Anh minh họa template 7
Hình 4-7 Ảnh minh họa template 8
Hình 4-8 Ảnh minh họa template 9
Hình 4-9 Anh minh họa template 9.1
Hình 4-10 Ảnh minh họa template 9.2
Hình 4-11 Ảnh minh họa template 10
Hình 4-12 Mạch khả đảo sau khi tổng hợp
Hình 4-13 Mạch khả đảo sau khi tối ưu
Hình 4-14 Mạch khả đảo sau khi tổng hợp
Hình 4-15 Mạch khả đảo sau khi tối ưu
Danh sách hình vẽ
5
5
5
5
6
11
15
30
30
30
31
31
32
32
32
32
33
34
36
37
39
39
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
viii
GVHD: TS. Trần Hoàng Linh
DANH SÁCH BẢNG BIỂU
Bảng 2-1 Bảng sự thật của hàm khả đảo 3 biến
Bảng 2-2 Bảng sự thật của hàm khả đảo không hoàn chỉnh 2 biến
Bảng 2-3 Chi phí lượng tử của các cổng cơ bản
Bảng 2-4 Ví dụ về phương pháp transformation-based
Bảng 2-5 Ví dụ biểu diễn hàm khả đảo bằng các k-cycle
Bảng 2-6 Bảng sự thật của hàm khả đảo f
Bảng 2-7 s-maps của ngõ vào a,b và c
Bảng 2-8 smap của các ngõ ra X, y và z
Bảng 2-9 Bảng sự thật của cổng Toffoli t0-lp2p
Bảng 2-10 Các cổng Toffoli 3 biến và cặp hoán đổi của chúng
Bảng 2-11 Bảng tính điểm lần 1
Bảng 2-12 smaps sau khi sử dụng cổng T0-lp2p
Bảng 2-13 Bảng tính điểm lần 2
Bảng 2-14 smaps sau khi sử dụng cổng Tl-0p2p
Bảng 2-15 Bảng tính điểm lần 3
Bảng 2-16 smaps sau khi sử dụng cổng T0-lp2p
Bảng 3-1 Hàm đa ngõ ra không hoàn chỉnh 3 ngõ vào và 3 ngõ ra
Bảng 3-2 Kết quả chuyển đổi hàm sau bước 2
Bảng 3-3 Kết quả chuyển đổi hàm sau bước 3
Bảng 3-4 Hàm hoàn chỉnh sau khi chuyển đổi
Bảng 3-5 Hàm đa ngõ ra không hoàn chỉnh 2 ngõ vào và 4 ngõ ra
Bảng 3-6 Hàm sau khi thêm ancilla
Bảng 3-7 Hàm sau khi gán các tùy định
Bảng 3-8 Hàm hoàn chỉnh sau khi chuyển đổi
Bảng 3-9 Hàm không hoàn chỉnh với 4 ngõ vào và 2 ngõ ra
Bảng 3-10 Hàm sau khi thêm garbage
Bảng 3-11 Ket quả chuyển đổi sau bước 4
Bảng 3-12 Kết quả chuyển đổi sau bước 5
Bảng 4-1 Các cổng Toffoli 3 ngõ vào
Bảng 4-2 Bảng sự thật của hàm f ví dụ A
Bảng 4-3 Hàm f sau khi tiền xử lí
Bảng 4-4 Bảng sự thật của hàm f ví dụ A
Bảng 4-5 Kết quả thí nghiệm
Bảng 4-6 So sánh với các thuật toán khác bảng 1
Bảng 4-7 So sánh với các thuật toán khác bảng 2
Danh sách bảng biểu
4
4
7
7
9
10
10
11
12
12
13
14
14
14
15
15
18
19
20
20
21
21
22
22
24
24
25
26
28
35
35
37
40
41
43
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
ix
GVHD: TS. Trần Hoàng Linh
DANH SÁCH CÁC TỪ VIẾT TẮT
1) QC: Quantum Cost (Chi phí luợng tủ)
2) GC: Gate count (Số cổng luợng tủ)
Danh sách bảng biểu
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
1
GVHD: TS. Trần Hoàng Linh
CHƯƠNG 1: MỞ ĐẦU
1.1. Lý do chọn đề tài
Logic khả đảo là một lĩnh vực nghiên cứu cấp thiết. Điểm thú vị trong logic khả
đảo là các ứng dụng của nó trong tính toán lượng tử, CMOS công suất thấp, công nghệ
nano, và tính toán quang. Kiến trúc duy nhất của mạch khả đảo là dạng cascade của các
cổng khả đảo [ 1].
Với sự phát triển không ngừng của khoa học công nghệ, tính toán lượng tử đã
trở thành một công cụ hỗ trợ hết sức mạnh mẽ cho các nhà khoa học, một số ứng dụng
tuyệt vời của tính toán lượng tử như Machine Learning, giải quyết các bài toán tối ưu
vận tải, mô phỏng y sinh và các dịch vụ tài chính [2].
Tuy đây không phải là một chủ đề mới nhung do các ứng dụng của nó nên vẫn
luôn thu hút được các nhà nghiên cứu. Rất nhiều các giải thuật đã được đưa ra với nhiều
các tiếp cận khác nhau như cycle-base, group-threory base, transformationbase,..
.Nhưng dù là cách tiếp cận nào đi nữa thì mục đích cuối cùng cũng là để có được một
giải thuật tổng hợp ra mạch khả đảo tối ưu nhất, có thể là về chi phí, kích thước mạch
hay là về thời gian tổng hợp.
Do đó, việc chọn đề tài “Thuật toán tổng họp mạch khả đảo đa ngỏ ra không
hoàn chỉnh” nhằm mục đích kế thừa và phát triển các thuật toán tổng hợp mạch khả
đảo đến mức tối ưu nhất có thể, làm tăng thêm sự phong phú về thuật toán trong lĩnh
vực này.
1.2. Mục tiêu và nhiệm vụ của luận văn
Các kiến thức và kết quả cần đạt được ở đề tài này là:
•
Tìm hiểu và phân tích một số thuật toán tổng hợp mạch phổ biến và có liên quan
đến đề tài.
•
Đưa ra phương pháp chuyển đổi hàm logic khả đảo đa ngõ ra không hoàn chỉnh
sang hàm logic khả đảo đa ngõ ra hoàn chỉnh để làm ngõ vào cho thuật toán tổng
hợp.
• Kết hợp tính chất hoán đổi của cổng Toffoli kết hợp với một số tính chất của
Chương 1: Mở đầu
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
2
GVHD: TS. Trần Hoàng Linh
phương pháp cycle-based để tạo nên một phương pháp tổng hợp mạch tối ưu hóa
về thời gian tổng hợp.
• Dựa trên các thuật toán đã nghiên cứu để xây dựng nên công cụ tổng hợp mạch,
nhằm mục đích kiểm chứng và đo lường các thông số đánh giá thuật toán.
1.3. Đối tượng và phạm vỉ nghiên cứu
Đối tượng nghiên cứu của đề tài: Các nghiên cứu của đề tài nhằm tối ưu hóa
các thuật toán tổng hợp mạch cho các hàm boolean hoàn chỉnh bằng cách kết hợp nhiều
thuật toán đã có sẵn lại với nhau. Đưa ra phương thức chuyển đổi hàm logic không hoàn
chỉnh sang hàm logic hoàn chỉnh để cho các thuật toán có thể tổng hợp ra mạch với chi
phí thấp nhất có thể và thời gian nhanh nhất có thể. Đối tượng nghiên cứu của đề tài là:
• Chuyển đổi từ hàm boolean không hoàn chỉnh sang hàm boolean hoàn chỉnh một
cách tối ưu nhất để làm ngõ vào cho thuật toán tổng hợp mạch.
• Kết phương pháp tổng hợp cycle-based và tính chất hoán đổi của cổng Toffoli
để tạo ra một thuật toán tổng hợp mạch khả đảo với thời gian tổng hợp nhanh,
ổn định và chi phí hợp lí.
Phạm vi nghiên cứu: Phạm vi nghiên cứu của đề tài sẽ xây dựng được thuật
toán đã nêu phía trên. Xây dựng công cụ tổng hợp mạch khả đảo dựa trên thuật toán đã
nghiên cứu thành công. Kết quả thí nghiệm đo đạt được sẽ so sánh với các kết quả ở các
thuật toán cùng loại để đánh giá tính khả dụng của giải thuật.
1.4. Ý nghĩa khoa học và thực tiễn
Ý nghĩa khoa học:
Chủ đề logic khả đảo tuy đã xuất hiện khá lâu nhưng vẫn còn mới ở trong nước.
Việc tìm hiểu và nghiên cứu về các thuật toán tổng hợp mạch khả đảo này giúp người
đọc có thêm sự hiểu biết về lĩnh vực này, đặc biệt là các nhà nghiên cứu trong nước.
Đưa ra phương pháp giúp tổng hợp mạch khả đảo một cách nhanh nhất có thể.
Ngoài ra, còn giúp cho người đọc có thêm một hướng nghiên cứu mới về sự kết hợp
giữa các phương pháp tổng hợp mạch đã có sẵn.
Ý nghĩa thực tiễn:
Chương 1: Mở đầu
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
3
GVHD: TS. Trần Hoàng Linh
Luận văn đưa ra một thuật toán tổng hợp mới với sự kết hợp của hai phương
pháp cycle-based và tính chất hoán đổi của cổng Toffoli, góp phần tăng thêm sự phong
phú về thuật toán tổng hợp mạch khả đảo. Đồng thời cũng đưa ra thêm một sự lựa chọn
khi tổng hợp mạch. Tuy có thể chi phí lượng tử cao nhưng bù lại thời gian tổng hợp
được mạch nhanh hơn một số phương pháp. Tùy theo yêu cầu của ứng dụng mà các nhà
thiết kế có thể lựa chọn thuật toán tổng hợp mạch phù hợp.
Chương 1: Mở đầu
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
4
GVHD: TS. Trần Hoàng Linh
CHƯƠNG 2: TỔNG QUAN
2.1. Các khái niệm cơ bản
2.1.1. Hàm khả đảo và mạch
Một hàm boolean được gọi là khả đảo nếu có số ngõ ra bằng với số ngõ vào và
ánh xạ giữa ngõ ra và ngõ vào là 1-1. Hàm khả đảo n biến là một hàm khả đảo có n ngõ
vào và n ngõ ra. Ví dụ như hàm F có bảng sự thật như sau:
Bảng 2-1 Bảng sự thật của hàm khả đảo 3 biến
ngõ ra sẽ được biểu diễn ở dạng chính tắc để dễ dàng quan sát và xử lí. Trong ví dụ
trên có 3 ngõ ra Y2, Y1 và YO được biểu diễn như sau:
• Y2 = E(0,1,2,5) Y1 = E(2,5,6,7) YO = 2(1,3,5,7)
Hàm khả đảo hoàn chỉnh là một hàm khả đảo mà ở tất cả các giá trị của ngõ
vào đều có giá trị của ngõ ra tương ứng. Hàm F ở ví dụ trên là một hàm khả đảo hoàn
chỉnh.
Hàm khả đảo không hoàn chỉnh là một hàm khả đảo cố các giá trị tùy định ở
ngõ ra. Ví dụ với hàm khả đảo không hoàn chỉnh 2 ngõ vào, 2 ngõ ra:
Bảng 2-2 Bảng sự thật của hàm khả đảo không hoàn chỉnh 2 biến
Ngõ vào
XI XO
0
0
0
1
1
0
1
1
Chương 2: Tổng quan
Ngõ ra
Y1 YO
X
1
X
0
1
0
X
0
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
GVHD: TS. Trần Hoàng Linh
5
• Y1 = 2(2) + d(0,1)
YO = 2(0) + d(3)
Mạch khả đảo là mạch hiện thực của hàm khả đảo. Trong logic khả đảo cổ điển,
mỗi cặp ngõ vào/ ngõ ra thường được gọi là một đường hoặc một dây, trong khi ở logic
lượng tử, nó được gọi là một qubit. Một ví dụ về mạch khả đảo được thể hiện
trong hình 2-1.
---------------------- » --- *2
<
%!
%!
%!
x0
%■
*2
*2
» %1
CD x° c
t
X ^0®^l
Hình 2-1 Mạch khả đảo với công NOT, CNOT và Toffoli
2.1.2. Cổng khả đảo
•
Một số cổng khả đảo cơ bản:
NOT: (x)
(%)
x
*
Hình 2-2 Cổng NOT
•
CNOT: (%; ỳ) -> (x; y © x)
X1
%!
XQ
%o®xi
a)
b)
Hình 2-3 a) cổng CNOT, b) cổng CNOT âm
• Toffoli: (x, y; z) -> (x, y;z® xy)
*2 —•- *2
*1 — » %!
< —
xo
X0®X1X2
*2
x2 _( » *2
—
*1
%!
*1
xo
xo
*2
> - %!
ộ- XoSXjXz
a)
b)
c)
Hình 2-4 a) cổng Toffoli, b) cổng Toffoli bán âm, c) cổng Toffoli âm
• Multicontrol Toffoli:
x0©x^x2
%! —o %!
%0
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
6
GVHD: TS. Trần Hoàng Linh
Hình 2-5 Cổng multicontrol Toffoli
2.1.3. Đường Ancilla và Garbage
Có 2nỉ hàm khả đảo phân biệt n biến với các hoán vị của 2n phần tử. Tuy nhiên,
cũng tồn tại 2Ịl=1(2í)2‘ — 2n2,n hàm không khả đảo từ 1 đến n ngõ ra. Để chuyển đổi các
hàm đó thành hàm khả đảo cần phải thêm các ngõ vào/ ngõ ra. Các đường thêm vào ở
ngõ vào được gọi là đường anciỉỉa và thường là hằng số 0 hoặc 1. Các đường ancilla mà
giá trị của nó không bị đặt lại thành một hằng số ở cuối quá trình tính toán được gọi là
các đường garbage. Ngõ ra của các đường ancilla không bị ràng buộc trong bảng sự
thật được gọi là tùy định (DC). Với một hàm bất khả đảo có số tổ hợp của mỗi ngõ ra
có thể được lặp lại đến M lần, thì cần g = ịlog2M] đường ancilla để xây dựng được mạch
khả đảo [3].
2.1.4. Chi phí lượng tử
Chi phí lượng tử là một thông số đo lường quan trọng trong việc so sánh các
mạch khả đảo. Chi phí lượng tử của một cổng được định nghĩa như là số lượng các
lượng tử cơ bản cần thiết để tạo nên cổng đó [1]. Chi phí lượng tử của một cổng n-bit
Toffoli âm với ít nhất một đường điều khiển dương bằng với chi phí của một cổng nbit Toffoli. Nếu tất cả các đường điều khiển điều là âm thì chi phí lượng tử sẽ phải cộng
thêm 2 [1],
Chi phí lượng tử của một mạch được định nghĩa là tổng chi phí của tất cả các
cổng trong mạch. Trong đó, chi phí các cổng cơ bản được định nghĩa trong bảng 2-3.
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
7
Bảng 2-3 Chi phí lượng tử của các cổng cơ bản
Tên công
GVHD: TS. Trần Hoàng Linh
Chi phí
NOT
1
CNOT
CNOT âm
1
3
Toffoli
5
Toffoli bán âm
5
Toffoli âm
7
NxN Toffoli (bán âm)
2N - 3
NxN Toffoli âm
2N - 1
2.2. Các phương pháp tổng họp mạch hiện tại
2.2.1. Phương pháp transformation-based
Phương pháp transformation-based lần đầu được đưa ra bởi Miller et al [4] dựa
trên sự tương quan giữa ngõ vào và ngõ ra trong bảng sự thật. Các thuật toán dựa trên
phương pháp này sẽ quét qua tất cả các hàng trong bảng sự thật, tìm kiếm sự khác biệt
giữa các ngõ vào và ngõ ra, và sửa chữa các điểm khác biệt đó bằng cách áp dụng các
cổng multicontrol Toffoli nhung chỉ với các điều khiển dương [5]. Một ví dụ về phương
pháp này được miêu tả ở bảng 2-4:
Bảng 2-4 Ví dụ về phương pháp transformation-based
Ngõ vào Ngõ ra 1
2
3
4
5
6
7
8
9
stt
abc
xyz xyz xyz xyz xyz xyz xyz xyz xyz xyz
0
000
011 010 000 000 000 000 000 000 000 000
1
001
000 000 010 011 001 001 001 001 001 001
2
010
101 101 111 110 110 010 010 010 010 010
3
011
010 011 001 001 011 111 011 011 011 011
4
100
001 001 011 010 010 110 110 100 100 100
5
101
111 110 100 100 100 100 100 110 111 101
6
110
110 111 101 101 111 011 111 101 101 111
7
111
100 100 110 111 101 101 101 111 110 110
1) Ở hàng 0, ngõ vào và ngõ ra khác nhau 2 bit, nên sử dụng 1 cổng CNOT (y;z) để
thay đổi bit thấp nhất từ 1 thành 0. Các giá trị in đậm là các giá trị ngõ ra sẽ bị
thay đổi theo. Kết quả sau khi qua cổng CNOT được thể hiện ở cột 1.
2) Lúc này hàng 0 chỉ còn lại bit thứ y là 1 nên sử dụng 1 cổng NOT (y) để chuyển
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
8
GVHD: TS. Trần Hoàng Linh
bit này về 0. Kết quả được thể hiện ở cột 2.
3) Ngõ ra ở hàng 0 đã giống với ngõ vào, nên ở bước này cần chọn cổng mà không
làm ảnh hường đến hàng 0. Ở hàng 1, cần chuyển đổi bit z thành 1 trước nên
cổng CNOT (y;z) được chọn. Kết quả được thể hiện ở cột 3.
4) Lúc này cần chuyển bit y ở hàng 1 về 0, cổng CNOT (z;y) được chọn.
5) Tiếp tục lặp lại như các bước trên cho đến cột 5, bit X ở hàng 3 cần phải chuyển
về 0, vì để không ảnh hưởng đến các hàng trên nên cổng Toffoli (y,z;x) được
chọn.
6) Như vậy, cứ lặp lại từng hàng cho đến khi ngõ ra giống với ngõ vào. Lúc này chỉ
cần viết lại các cổng từ cột 1 đến cột 9 theo chiều từ phải sang trái. Lý do phải
viết ngược lại là vì thuật toán này đang biến đổi ngõ ra sao cho giống với ngõ
vào, nên để từ ngõ vào thành ngõ ra, mạch phải được đảo lại.
Thuật toán này được cải tiến bời Maslov, tác giả tổng hợp mạch một cách trực
tiếp bởi sự phức tạp của phổ Reed-Muller thay vì sử dụng khoảng cách Hamming. Cổng
Toffoli với cả hai điều khiển âm và dương đều được áp dụng. Sau khi tổng hợp mạch
thì có thể tối ưu bởi các template của cổng Toffoli [3].
2.2.2. Phương pháp cycle-based
Một số khái niệm cơ bản trong phương pháp cycle-based:
Cycle là một tâp hoán vị (alf a2,..., afe) mà trong đó /(aq) = a2,/(a2) = a3,..., /(afe) =
a-Ị. Chiều dài của một cycle được tính bằng số phần tử trong tập hoán vị của cycle đó.
Một cycle có chiều dài k được gọi là k-cycle. Với cycle có chiều dài bằng 2 được gọi là
một transposition.
Hai cycle được gọi là phân biệt (disjoint) nếu chúng không có chung bất kì một
phần tử nào. Và hai cycle phân biệt có thể hoán đổi vị trí cho nhau. Ví dụ (1, 2)(3, 4) =
(3, 4)(1, 2). Tính chất hoán đổi này sẽ không còn đúng nếu hai cycle có ít nhất một phần
tử chung [3].
Ngoài ra, một cycle có thể được viết theo nhiều cách khác nhau bằng cách thay
đổi vị trí các phần tử trong cycle một cách tuần tự. Ví dụ như cycle (1, 2, 3) còn có thể
được viết theo cách khác là (2, 3, 1) hay (3,1, 2) [6].
Biểu diễn hàm bằng các k-cycle: Ngoài cách biểu diễn hàm khả đảo bằng bảng
sự thật thì có thể sử dụng cách biểu diễn bằng k-cycle. Với số biến càng lớn thì kích
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
9
GVHD: TS. Trần Hoàng Linh
thước của bảng sự thật càng lớn nên biểu diễn bằng các k-cycle là một sự lựa chọn dễ
nhìn hon. Ví dụ như hàm khả đảo f có 3 biến như sau:
Bảng 2-5 Ví dụ biểu diễn hàm khả đảo bằng các k-cycle
Ngõ vào
Ngõ ra
a
b
c
y
X
0
0
0
0
0
0
1
0
0
1
1
0
2
0
1
0
1
0
3
0
1
1
0
1
4
1
0
0
1
1
5
1
0
1
0
1
6
1
1
0
1
1
7
1
1
1
0
0
z
0
0
1
1
1
0
0
1
0
4
5
3
7
2
6
1
f = (1,4,7)(2, 5)
Trong khi phương pháp transformation-based tập trung vào mỗi giá trị riêng lẻ
của ngõ vào so với ngõ ra, thì phương pháp cycle-based tập trung vào các cycles khi
ngõ ra được chuyển về lại thành ngõ vào. Ví dụ như với một cổng Toffoli 3 biến a, b, c
với a là bit cao nhất, T(a,b;c) thì sẽ tạo thành một transposition (6,7). Điều này có nghĩa
là nếu ngõ vào là 6 thì ngõ ra sẽ là 7 và ngược lại, nếu ngõ vào là 7 thì ngõ ra tương ứng
sẽ là 6.
Các thuật toán của phương pháp cycle-based này tập trung ở việc phân tách các
k-cycle có chiều dài lớn thành các 2-cycles, 3-cycles,.. .Phần xử lí phía sau phụ thuộc
vào các công thức tính toán của riêng mỗi thuật toán.
Yêu cầu để sử dụng được phương pháp cycle-based là hàm đưa vào phải là một
hàm khả đảo hoàn chỉnh.
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
GVHD: TS. Trần Hoàng Linh
10
2.2.3. Phương pháp graphical [7]
Phương pháp này dựa trên tính chất hoán đổi của cổng Toffoli để tổng hợp mạch.
Để chọn là cổng tối ưu nhất, tác giả đã sử dụng s-maps để đo các thông số tối ưu, từ đó
lựa chọn cổng tối ưu nhất có thể. Các bước thực hiện thuật toán này như sau:
Xây dựng s-maps: s-map của bit thứ i là một bảng có 2 hàng và có 2n_1 cột với
n là số biến của ngõ vào cũng như ngõ ra. Hàng phía trên là hàng chứa các giá trị của
ngõ ra mà tại đó, bít thứ i của ngõ vào tương ứng bằng 0, và ngược lại hàng phía dưới
chứa các giá trị của ngõ ra mà tại đó, bít thứ i của ngõ vào tương ứng bằng 1. Ví dụ, cho
hàm khả đảo f với bảng sự thật như sau:
Bảng 2-6 Bảng sự thật của hàm khả đảo f
Ngõ vào
a
b
c
X
0
0
0
0
0
1
0
0
1
0
2
0
1
0
0
3
0
1
1
0
4
1
0
0
1
5
1
0
1
1
6
1
1
0
1
7
1
1
1
1
Ngõ ra
y
1
1
0
0
0
1
0
1
z
0
1
0
1
0
0
1
1
2
3
0
1
4
6
5
7
Vẽ s-map cho bit a gồm 2 hàng và 4 cột. Ở hàng trên điền từ trái sang phải các
giá trị thập phân của ngõ vào mà bit a bằng 0, và điền các giá trị còn lại ở hàng dưới.
Tương tự cho các s-map của bit b và c như hình 2-7.
a
0
4
1
1
5
k
2
6
Bảng 2-7 s-maps của ngõ vào a,b và c
b
3
4
5
0
1
0
7
2
3
6
7
1
i
h
g
f
e
d
c
2
3
4
5
6
7
c
b
a
j
Thay các giá trị thập phân trong mỗi bảng bằng giá trị thập phân tương ứng ở
ngõ ra. Ví dụ với ngõ vào là 2 thì ngõ ra là 5, thực hiện thay thế số 2 trong tất cả các smap từ 2 thành 5. Thực hiện tương tượng cho các giá trị còn lại để được s-maps của
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
GVHD: TS. Trần Hoàng Linh
11
ngõ ra như hình 2-8. So sánh với s-maps của ngõ vào, nếu các giá trị nào của ngõ ra
nằm không đúng hàng thì sẽ bị tô đen. Các ô đã đúng hàng thì không tô màu.
Bảng 2-8 smap của các ngõ ra X, y và z
X
2
4
1
3
6
k
y
0
5
j
1
7
i
2
0
h
3
1
g
z
4
5
f
6
7
e
2
3
d
0
1
c
4
6
b
5
7
a
Sau khi vẽ được s-maps của ngõ ra, tiến hành lập bảng các cổng Toffoli và hàng
hoán đổi tương ứng. Như đã giới thiệu ở mục 2.1.2, Toffoli có 3 loại: cổng Toffoli,
Toffoli bán âm và Toffoli âm. Như vậy, với k đường điều khiển thì sẽ có k! cổng Toffoli
với các đường điều khiển âm và dương tương ứng cho cùng một vị trí của XOR. Hình
2-6 mô tả 4 cổng Toffoli cho cùng một vị trí của XOR.
x2 -<
x
x2 -<
2
>- X
1
*0
-
»— x
2
X
1
x
o - XQ®X1X2
Qb) t0-ln2p
X0®X1%2
a)
Qt0-lp2p
1 —o—
%
x
2 —x2
X
1 —Ọ -- %!
%0
c) t0-lp2n
d) t0-ln2n
Hình 2-6 4 cổng Toffoli cho cùng một vị trí XOR
Thành lập bảng sự thật cho từng cổng để tìm cặp hoán đổi mà cổng đó gây ra.
Từ bảng 2-9 có thể thấy ở hai hàng in đậm, chỉ có tại giá trị ngõ vào là 6 và 7 là bị thay
đổi ở ngõ ra thành 7, 6.
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
GVHD: TS. Trần Hoàng Linh
12
Bảng 2-9 Bảng sự thật của cổng Toffoli t0-lp2p
Ngõ vào
Ngõ ra
a
b
c
X
y
0
0
0
0
0
0
1
0
0
1
0
0
2
0
1
0
0
1
3
0
1
1
0
1
4
1
0
0
1
0
5
1
0
1
1
0
6
1
1
0
1
1
7
1
1
1
1
1
z
0
1
0
1
0
1
1
0
0
1
2
3
4
5
7
6
Như vậy cặp hoán đổi của cổng t0-lp2p là (6, 7). Tiếp tục thực hiện tương tự
cho các cổng còn lại và tổng hợp lại như bảng 2-10.
Bảng 2-10 Các cổng Toffoli 3 biến và cặp hoán đổi của chúng
Tên công
Cặp hoán đổi
Cột tương ứng trong
bảng 2-7
T0-lp2p
6,7
a
T0-ln2p
4,5
b
T0-lp2n
T0-ln2n
c
d
Tl-0p2p
Tl-0n2p
2,3
0,1
5,7
4,6
Tl-0p2n
Tl-0n2n
T2-0plp
1,3
0,2
3,7
g
h
i
T2-0nlp
T2-0pln
T2-0nln
2,6
1,5
0,4
j
k
1
e
f
Đe biến đổi s-maps của ngõ ra giống với ngõ vào thì các cổng này sẽ làm
nhiệm vụ hoán đổi hai hàng của cột tương ứng cho nhau. Mục đích là đưa các giá trị
nằm sai hàng về đúng hàng của nó.
Quy tắt để chọn cổng như sau:
• Neu tạo ra một cột với 2 ô không đúng vị trí thì +1 điểm cho cổng đó. Ví dụ
trong bảng 2-8, cổng T0-lp2p sẽ hoán đổi 2 giá trị ở cột a là 5 và 7 cho nhau. Ở
smap của y, 5 và 7 đổi vị trị cho nhau làm cho cột e sẽ có 2 ô không đúng vị trí.
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng
Luận văn thạc sĩ
13
GVHD: TS. Trần Hoàng Linh
Vậy cổng T0-lp2p sẽ được +1 điểm ở smap y.
• Nếu hoán đổi 2 ô không đúng vị trí của cùng 1 cột thì +1 điểm cho cổng đó. Như
đã đề cập, mục đích là đưa các giá trị nằm sai hàng về đúng hàng của nó, nên các
cổng làm được việc đó sẽ được ưu tiên hơn.
• Nếu hoán đổi 2 ô không đúng vị trí của cùng 1 cột và tạo ra một cột gồm 2 ô
không đúng vị trí ở smap khác thì được +2 điểm. Quy tắc này là kết hợp của 2
quy tắc trên.
• Nếu hoán đổi 2 ô mà làm hủy đi các cột đang có của smap thì -1 điểm cho cổng
tương ứng.
• Nếu như có hơn 2 cổng có điểm bằng nhau thì sẽ chọn ngẫu nhiên một cổng bất
kì.
Bảng 2-11 Bảng tính điểm lần 1
Tên công
Điểm
Cột tương ứng
hong bảng 2-7
Smap-X Smap-y Smap-Z
T0-lp2p
a
0
1
0
T0-ln2p
b
0
1
0
T0-lp2n
c
-1
0
0
T0-ln2n
d
-1
0
0
Tl-0p2p
e
0
0
1
Tl-0n2p
f
0
0
1
Tl-0p2n
g
0
1
0
Tl-0n2n
h
0
1
0
T2-0plp
i
-1
0
0
T2-0nlp
j
-1
0
0
T2-0pln
k
-1
0
0
T2-0nln
-1
1
0
0
Dựa vào bộ quy tắc này, thực hiện tính điểm cho để chọn cổng tối ưu. Trong bảng 2-11,
có 4 cổng in đậm là cùng điểm, chọn ngẫu nhiên cổng T0-lp2p.
Chương 2: Tổng quan
HVTH: Nguyễn Hải Đăng