Yopovn

Ban quản trị Team YOPO
Thành viên BQT
Tham gia
28/1/21
Bài viết
86,007
Điểm
113
tác giả
CHUYÊN ĐỀ TIN HỌC LỚP 10 NĂM 2021 - 2022: chuyên đề bài toán và thuật toán 10

Chuyên đề

THUẬT TOÁN SỐ HỌC

I. Gới thiệu chung

Số học thuật toán (Algorithmic number theory) là một ngành toán học đang phát triển mạnh, nghiên cứu số học trên phương diện thuật toán. Ta cần chú ý rằng Số học là một trong những ngành toán học cổ nhất còn thuật toán lại là một khái niệm mới mẻ ra đời và phát triển từ trong thế kỉ XX. Số học thuật toán được xây dựng trên cơ sở những thành tựu của cả lý thuyết số học lẫn thuật toán.

Một trong những bài toán nổi tiếng nhất đã đựoc giải quyết trong thế kỉ XX là bài toán thứ 10 của Hilbert ‘Có tồn tại một thuật toán tổng quát cho phép ta trả lời một phương trình Diophantine cho trước có nghiệm hay không ?’. Phương trình Diophantine là phương trình có dạng f(x, y, z, … ) = 0 trong đó f(x, y, z, …) là đa thức của các biến x, y, z, … có các hệ số nguyên, và các biến chỉ nhận giá trị nguyên. Bài toán này đã được Michiakêvích giải quyết trọn vẹn và câu trả lời là phủ định, tức là không có thuật toán như vậy. Bài toán thứ 10 của Hilbert được giải quyết là một thành tựu quan trọng của số học cũng như thuật toán.

Số học thuật toán không chỉ phát triển trên những thành tựu của Số học sơ cấp, mà nó còn tận dụng những thành tựu của Số học hiện đại, Đại số hiện đại, Hình học đại số … Cũng như các ngành toán học - thuật toán khác, trong Số học thuật toán cũng có những bài toán NP, tức là không có thuật giải trong thời gian đa thức, tiêu biểu là bài toán phân tích một số ra các thừa số nguyên tố, thuật toán kiểm tra nguyên tố, …

Trong bài viết này, ta chỉ đề cập tới những vấn đề cơ bản nhất của Số học thuật toán, và trên cơ sở của toán học sơ cấp.

II. Các phép tính với số nguyên

Trong máy tính, các số đều được biểu diễn ở hệ nhị phân, hơn nữa việc mô tả dưới dạng nhị phân làm cho các phép tính trở nên đơn giản hơn rất nhiều.

Để cho tổng quát, ta giả sử hai toán hạng đều có đúng N bit (trong trường hợp số các bít có nghĩa nhỏ hơn N thì ta thêm 0 vào đầu cho đủ).

1. Phép cộng và phép trừ

Đối với phép cộng và phép nhân các số N bít, ta có thể thực hiện giống như phép cộng trừ trên hệ thập phân : Thực hiện cộng (hay trừ) từ phải sang trái (với bít ứng với số mũ nhỏ trước rồi số mũ lớn sau).

1. Phép nhân

Đối với phép nhân, ta có thuật toán nhân Nga được mô tả như sau :

Function Mult(a, b : Integer): Integer;

Var

c : Integer;

Begin

c := 0;

repeat

if Odd(b) then c := c + a;

a := a shl 1;

b := b shr 1;

until b = 0;

Mult := c;

End;

Nếu xét cho kĩ thì thực ra thuật toán nhân Nga có cùng một dạng với thuật toán nhân hai số bằng phương pháp mà bình thường ta vẫn dùng để tính tay, chỉ có điều khác là thao tác trên hệ nhị phân.

Thuật toán nhân Nga gồm N lần dịch bít, trong trường hợp tổng quát phải thực hiện N/2 lần phép cộng, do đó độ phức tạp tính toán là N2.

Sau đây, ta sẽ giới thiệu một thuật toán nhân khác, tuy phức tạp hơn nhưng có độ phức tạp nhỏ hơn.

Giả sử ta phải thực hiện phép nhân với hai số có 2N bit A và B. Phân tích :

A = a1*2N + a2

B = b1*2N + b2.

AB = a1*b1 * 22N + (a1b2 + a2b1)*2N + a2b2.

Ta chú ý rằng phép nhân với một luỹ thừa của 2 cũng như phép cộng có thời gian tỉ lệ với N.

Nhận xét : (a1+a2)(b1 + b2) - a1b1 - a2b2 = a1b2 + a2b1.

Do đó nếu biết (a1+a2)(b1 + b2), a1b1, a2b2 thì có thể tính được a1b2 + a2b1.

® Qui về nhân hai số 2N bit về 2 lần nhân N bit và một số phép tính có thời gian tỉ lệ với N.

Nếu gọi F(n) là thời gian nhiều nhất để thực hiện phép nhân hai số có 2n bit, ta có

F(n) = 3F(n-1) + k2n (*) trong đó k là một hằng số thể hiện chi phí các phép tính cộng và dịch bit trong mỗi bước gọi đệ qui. Chia cả hai vế của (*) cho 2n ta được

. Do đó, F(n) = O(3n) = O( ) hay nói cách khác thời gian thực hiện phép nhân hai số N bít có độ phức tạp cỡ O( ).

3. Phép chia
 

DOWNLOAD FILE

  • YOPOVN.COM_Tin học - Chuyên đề số học.docx
    66.2 KB · Lượt tải : 14
CHỦ ĐỀ LIÊN QUAN
CHỦ ĐỀ MỚI NHẤT
Nếu bạn cảm thấy nội dung chủ đề bổ ích , Hãy LIKE hoặc bình luận để chủ đề được sôi nổi hơn
  • Từ khóa
    báo cáo chuyên đề môn tin học thcs báo cáo chuyên đề tin học các chuyên đề tin học 6 chuyên de tin học lớp 3 chuyên de tin học thcs chuyên đề bồi dưỡng học sinh giỏi tin 8 chuyên đề bồi dưỡng học sinh giỏi tin học 12 chuyên đề bồi dưỡng học sinh giỏi tin học thcs chuyên đề bồi dưỡng học sinh giỏi tin học thpt chuyên đề bồi dưỡng hsg tin học thcs chuyên đề bồi dưỡng hsg tin học thpt chuyên đề bồi dưỡng tin học trẻ thcs chuyên đề môn tin học chuyên đề môn tin học lớp 10 chuyên đề môn tin học lớp 9 chuyên đề môn tin học thcs chuyên đề môn tin học tiểu học chuyên đề ôn thi học sinh giỏi tin học 11 chuyên đề tin học chuyên đề tin học 10 chuyên đề tin học 11 chuyên đề tin học 6 chuyên đề tin học 7 chuyên đề tin học 8 chuyên đề tin học 9 chuyên đề tin học lớp 11 chuyên đề tin học lớp 12 chuyên đề tin học lớp 4 chuyên đề tin học lớp 5 chuyên đề tin học lớp 6 chuyên đề tin học tiểu học chuyên đề tin học trẻ không chuyên chuyên đề tin học và xã hội chuyên đề xâu bồi dưỡng hsg tin học một số chuyên đề tin học lớp 6 đề chuyên tin quốc học huế đề chuyên tin quốc học huế 2019 đề chuyên tin quốc học huế 2020 đề thi chuyên tin khoa học tự nhiên đề thi chuyên viên tin học ngành thuế đề thi olympic tin học không chuyên đề thi tin học chuyên ngành đề thi tin học chuyên viên chính đề thi tin học chuyên viên chính 2017 đề thi tin học nâng ngạch chuyên viên chính đề thi tin học trẻ không chuyên cấp tỉnh đề thi tin học trẻ không chuyên lớp 5 đề thi tin học trẻ không chuyên thcs đề thi tin học trẻ không chuyên thcs pascal đề tin học trẻ không chuyên thcs đề tin học trẻ không chuyên thpt
  • THẦY CÔ CẦN TRỢ GIÚP, VUI LÒNG LIÊN HỆ!

    TƯ VẤN NHANH
    ZALO:0979702422

    BÀI VIẾT MỚI

    Top