SKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toán

25 337 0
SKKN Ứng dụng lý thuyết toán để giải các bài toán tin  Phần 3 Hình học tính toán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toánSKKN Ứng dụng lý thuyết toán để giải các bài toán tin Phần 3 Hình học tính toán

M ỤC L ỤC NỘI DUNG TRANG MỤC LỤC I PHẦN ĐẶT VẤN ĐỀ I.1/ Lý chọn đề tài I.2/ Mục tiêu nghiên cứu I.3/ Nhiệm vụ nghiên cứu I.4/ Đối tượng nghiên cứu I.5/ Các phương pháp nghiên cứu II PHẦN NỘI DUNG II.1/ Lịch sử vấn đề nghiên cứu II.2/ Cơ sở lý luận đề tài II.3/ Thực trạng vấn đề nghiên cứu II.4/ Nội dung nghiên cứu kết nghiên cứu A/ NỘI DUNG NGHIÊN CỨU A.1) Lý thuyết hình học tính tốn A.2) Các tập áp dụng 14 A.3) Một số tập đề nghị 19 A.4) Kết luận 23 B/ KẾT QUẢ NGHIÊN CỨU 24 III PHẦN KẾT LUẬN 24 III.1/ Kết luận 24 III.2/ Tài liệu tham khảo 25 I PHẦN ĐẶT VẤN ĐỀ I.1/ Lý chọn đề tài Để tiếp tục hoàn chỉnh chuyên đề bồi dưỡng HSG chuyên Tin “ỨNG DỤNG LÝ THUYẾT TOÁN ĐỂ GIẢI CÁC BÀI TỐN TIN”; qua q trình nghiên cứu, giảng dạy, tham khảo ý kiến đồng nghiệp, thấy hàng năm đề thi tin học khu vực Quốc gia có số tốn lập trình tin học đề cập nhiều đến yếu tố hình học, cụ thể hình học tính tốn Chính tơi tiếp tục chọn viết tiếp đề tài chuyên đề “ỨNG DỤNG LÝ THUYẾT TOÁN ĐỂ GIẢI CÁC BÀI TỐN TIN” (Phần 3: Hình học tính toán) I.2/ Mục tiêu nghiên cứu Như biết, toán học có ảnh hưởng lớn đến lĩnh vực sống Các tốn tin có thuật toán dựa sở lý thuyết toán học vững đem lại kết tốt nhiều so với thuật toán khác Giúp em học sinh có kiến thức tốt, tư tốt lập trình; hình học tính tốn vấn đề kỹ thuật lập trình có ứng dụng tư tốn học, cụ thể hình học mà người lập trình tin học cần phải biết xử lý I.3/ Nhiệm vụ nghiên cứu Trước hết thực đổi phương pháp giảng dạy Tin học làm cho học sinh sáng tạo tìm kết quả, lời giải hay “dạng toán tin có sử dụng tốn học”; giúp thân nắm vững lập trình, tư thuật tốn, kỹ thuật lập trình hình học tính tốn, đồng thời trao đổi học tập kinh nghiệm Quý Thầy Cô Tổ Tin học I.4/ Đối tượng nghiên cứu Trong nghiên cứu này, học sinh chọn em học lớp chuyên Tin học khối 10, 11, 12 học sinh bồi dưỡng chuẩn bị thi HSG cấp Tỉnh, cấp Quốc gia thuộc trường THPT Chuyên Tiền Giang số giáo viên đứng lớp dạy tin học trường THPT I.5/ Các phương pháp nghiên cứu * Phương pháp suy luận, tổng hợp: kết hợp từ nhiều nguồn tài liệu tham khảo tác giả tra cứu mạng internet với đề thi Học sinh Giỏi rút kinh nghiệm, hệ thống lại kiến thức, mở hướng * Phương pháp trò chuyện – vấn: trao đổi tâm tình với nhiều học sinh giỏi để nắm tình hình việc giải tốn tin hình học * Phương pháp khảo sát: thân tham gia giảng dạy lớp chuyên tin, đội tuyển HSG, kỳ tập huấn, đề; tham khảo đồng nghiệp, quý Thầy Cô giảng dạy đội tuyển nhiều năm nên có nắm tình hình sử dụng phương pháp làm em học sinh * Phương pháp phân tích lý luận: phân tích giúp học sinh nắm thật rõ chất vấn đề, lựa chọn phương pháp giải cho phù hợp II PHẦN NỘI DUNG II.1/ Lịch sử vấn đề nghiên cứu Trong năm liên tiếp dạy học sinh lớp chuyên tin, bồi dưỡng HSG lớp 10, 11, 12 đội tuyển thi HSG cấp Tỉnh, cấp Quốc Gia môn Tin học thân tham dự lớp “BỒI DƯỠNG TẬP HUẤN GIẢNG DẠY CHUYÊN ĐỀ MÔN CHUYÊN TIN HỌC THPT” nhiều năm Bộ GD&ĐT tổ chức Tôi nhận thấy kiến thức Tin học nâng lên rõ rệt Các giảng Thầy NGUYỄN THANH TÙNG, Thầy ĐỖ ĐỨC ĐÔNG, Thầy LÊ MINH HOÀNG, tham khảo ý kiến đồng nghiệp chuyên dạy bồi dưỡng đội tuyển Tỉnh bạn, trường THPT Chuyên, rút điều “KIẾN THỨC TOÁN HỌC RẤT QUAN TRỌNG DẠY LẬP TRÌNH TRONG TIN HỌC” Được động viên khuyến khích q Thầy Cơ tổ, thầy LÊ NGỌC LINH, mạnh dạng tiếp tục chọn viết phần ba cho đề tài “Hình học tính tốn”; II.2/ Cơ sở lý luận đề tài Kết hợp giảng tài liệu tham khảo, kiến thức thân để phân tích, tổng hợp, hệ thống II.3/ Thực trạng vấn đề nghiên cứu Đa số học sinh chuyên tin ngại, sợ giải tốn tin hình học tốn; lúng túng q trình phân tích, tổ chức liệu, thuật tốn, kỹ thuật lập trình để tìm chất vận dụng kiến thức cách thích hợp II.4/ Nội dung nghiên cứu kết nghiên cứu A/ NỘI DUNG NGHIÊN CỨU A.1) Lý thuyết hình học tính tốn A.1.1) Kiến thức hình học A.1.1.1) Tọa độ a) Trục toạ độ  Trục toạ độ (trục) đường thẳng xác định điểm gốc O   vectơ đơn vị e Kí hiệu O; e      Toạ độ vectơ trục: u  (a)  u  a.e    Toạ độ điểm trục: M (k )  OM  k e    Độ dài đại số vectơ trục: AB  a  AB  a.e   Chú ý: + Nếu AB hướng với e AB  AB   Nếu AB ngược hướng với e AB   AB + Nếu A(a), B(b) AB  b  a + Hệ thức Sa–lơ: Với A, B, C tuỳ ý trục, ta có: AB  BC  AC b) Hệ trục toạ độ  Hệ gồm hai trục toạ độ Ox, Oy vng góc với Vectơ đơn vị Ox, Oy   i , j O gốc toạ độ, Ox trục hoành, Oy trục tung      Toạ độ vectơ hệ trục toạ độ: u  ( x; y )  u  x i  y j     Toạ độ điểm hệ trục toạ độ: M ( x; y )  OM  x i  y j    Tính chất: Cho a  ( x; y), b  ( x; y ), k  R , A( x A ; y A ), B( xB ; yB ), C ( xC ; yC ) :       y  y + a  b   x  x    + b phương với a     + a  b  ( x  x  ; y  y )  + ka  (kx; ky )  k  R: x  kx vaø y  ky x y  (nếu x x y  0, y  0) + AB  ( xB  x A ; yB  y A ) x A  xB y y ; yI  A B 2 x x x y y y + Toạ độ trọng tâm G tam giác ABC: xG  A B C ; yG  A B C 3 x  kxB y  kyB + Toạ độ điểm M chia đoạn AB theo tỉ số k  1: xM  A ; yM  A  k  k   ( M chia đoạn AB theo tỉ số k  MA  k MB ) + Toạ độ trung điểm I đoạn thẳng AB: xI  A.1.1.2) Tích vơ hướng (tích chấm) a) Góc hai vectơ        Cho a, b  Từ điểm O vẽ OA  a , OB  b   AOB với 00   Khi  a, b    AOB  180 Chú ý:     +  a, b  = 900  a  b     +  a, b  = 00  a , b hướng     +  a, b  = 1800  a , b ngược hướng     +  a, b    b , a   a  b  A a O  b B b) Tích vơ hướng hai vectơ       Định nghĩa: a.b  a b cos  a, b    2 Đặc biệt: a.a  a  a     Tính chất: Với a, b , c kR, ta có:        + a.b  b a ; a  b  c   a.b  a.c ;         ka  b  k  a.b   a  kb  ; a  0; a   a            a  b 2  a  a.b  b ; +  a  b   a  a.b  b ;       a  b   a  b  a  b        + a.b >   a, b  nhọn + a.b <   a, b  tù    a.b =   a, b  vuông c) Biểu thức toạ độ tích vơ hướng     Cho a = (a1, a2), b = (b1, b2) Khi đó: a.b  a1b1  a2 b2   cos(a , b )    a  a12  a22 ; a1b1  a2 b2 a12  a22 b12  b22 ;   a  b  a1b1  a2 b2   Cho A( x A ; y A ), B( xB ; yB ) Khi đó: AB  ( xB  x A )2  ( yB  y A )2 A.1.1.3) Tích hữu hướng (tích chéo)     Tích chéo hai vectơ u v , kí hiệu u  v số thực tính   tích độ dài hai vectơ u v nhân với sin góc xen hai vectơ Góc xen hai vecto góc định hướng, có số đo từ  tới  , số đo mang dấu dương   chiều quay từ u tới v chiều thuận (ngược chiều kim đồng hồ) mang dấu   âm chiều quay từ u tới v chiều nghịch (theo chiều kim đồng hồ)   6 Bằng công cụ đại số tuyến tính, người ta chứng minh cơng thức tích   chéo hai vecto u   xu , yu  v   xv , yv  sau:    x x u  v  xu yv  xv yu  u v yu yv  xu xv   Từ ta suy y y  u v   cơng thức tính sin góc định hướng  hai vecto u   xu , yu  v   xv , yv  :   uv xu yv  xv yu sin      u v ( xu2  y2u )(x 2v +y2v tức giá trị tích chéo định thức ma trận    Về mặt hình học, giá trị tuyệt đối tích chéo u  v diện tích hình bình        hành OABC, O gốc tọa độ, OA  u , OC  v OB  u  v Tích chéo có ứng dụng quan trọng việc khảo sát chiều: Giả sử ta từ điểm A sang điểm B theo đường thẳng tiếp sang điểm C theo đường thẳng, đó:   - Tích chéo AB  BC số dương chỗ rẽ B “rẽ trái” (hay nói bẻ góc ngược chiều kim đồng hồ);   - Tích chéo AB  BC số âm chỗ rẽ B “rẽ phải”;   - Tích chéo AB  BC = có nghĩa ba điểm A, B, C thẳng hàng A C A CCW B CW B C A.1.1.4) Đường thẳng a) Vectơ phương đường thẳng  Vectơ u  đgl vectơ phương đường thẳng  giá song song trùng với    Nhận xét:– Nếu u VTCP  ku (k  0) VTCP  – Một đường thẳng hoàn toàn xác định biết điểm VTCP b) Vectơ pháp tuyến đường thẳng  Vectơ n  đgl vectơ pháp tuyến đường thẳng  giá vng góc với    Nhận xét: – Nếu n VTPT  kn (k  0) VTPT  – Một đường thẳng hoàn toàn xác định biết điểm VTPT     – Nếu u VTCP n VTPT  u  n c) Phương trình tham số đường thẳng  Cho đường thẳng  qua M0 ( x0 ; y0 ) có VTCP u  (u1; u2 ) Phương trình tham số :  x  x  tu1   y  y0  tu2 (1) ( t tham số)  x  x  tu Nhận xét: – M(x; y)     t  R:  y  y  tu  – Gọi k hệ số góc  thì: + k = tan, với  =  xAv ,   90 +k= u2 , u1 với u1  d) Phương trình tắc đường thẳng  Cho đường thẳng  qua M0 ( x0 ; y0 ) có VTCP u  (u1; u2 ) Phương trình tắc : x  x0 y  y0  u1 u2 (2) (u1  0, u2  0) Chú ý: Trong trường hợp u1 = u2 = đường thẳng khơng có phương trình tắc e) Phương trình tổng quát đường thẳng PT ax  by  c  với a2  b2  đgl phương trình tổng quát đường thẳng Nhận xét: – Nếu  có phương trình ax  by  c   có:    VTPT n  (a; b) VTCP u  (b; a) u  (b; a)  – Nếu  qua M0 ( x0 ; y0 ) có VTPT n  (a; b) phương trình  là: a( x  x )  b ( y  y )  Các trường hợp đặc biệt: Các hệ số c=0 a=0 b=0 Phương trình đường thẳng  ax  by  by  c  ax  c  Tính chất đường thẳng   qua gốc toạ độ O  // Ox   Ox  // Oy   Oy   qua hai điểm A(a; 0), B(0; b) (a, b  0): Phương trình : x y   a b (phương trình đường thẳng theo đoạn chắn)   qua điểm M0 ( x0 ; y0 ) có hệ số góc k: Phương trình : y  y0  k ( x  x0 ) (phương trình đường thẳng theo hệ số góc) f) Vị trí tương đối hai đường thẳng Cho hai đường thẳng 1: a1 x  b1y  c1  2: a2 x  b2 y  c2  Toạ độ giao điểm 1 2 nghiệm hệ phương trình: a1 x  b1y  c1   a2 x  b2 y  c2  (1)  1 cắt 2  hệ (1) có nghiệm  a1 b1  a2 b2  1 // 2 a1 b1 c1 (nếu a2 , b2 , c2  )   a2 b2 c2  hệ (1) vô nghiệm   1  2  hệ (1) có vơ số nghiệm  (nếu a2 , b2 , c2  ) a1 b1 c1 (nếu a2 , b2 , c2  )   a2 b2 c2 g) Góc hai đường thẳng  Cho hai đường thẳng 1: a1 x  b1y  c1  (có VTPT n1  (a1; b1 ) )  2: a2 x  b2 y  c2  (có VTPT n2  (a2 ; b2 ) )   (n , n ) (n1 , n2 )  900 ( 1 , 2 )       180  ( n1 , n2 ) ( n1 , n2 )  90   n1.n2 a1b1  a2 b2     cos(1 , 2 )  cos( n1 , n2 )     n1 n2 a12  b12 a22  b22 Chú ý:  1  2  a1a2  b1b2   Cho 1: y  k1 x  m1 , 2: y  k2 x  m2 thì: + 1 // 2  k1 = k2 + 1  2  k1 k2 = –1 h) Khoảng cách từ điểm đến đường thẳng  Khoảng cách từ điểm đến đường thẳng Cho đường thẳng : ax  by  c  điểm M0 ( x0 ; y0 ) d ( M0 , )  ax0  by0  c a2  b2  Vị trí tương đối hai điểm đường thẳng Cho đường thẳng : ax  by  c  hai điểm M ( xM ; yM ), N ( x N ; y N )   – M, N nằm phía   (axM  by M  c )(ax N  by N  c )  – M, N nằm khác phía   (axM  by M  c )(ax N  by N  c )   Phương trình đường phân giác góc tạo hai đường thẳng Cho hai đường thẳng 1: a1 x  b1y  c1  2: a2 x  b2 y  c2  cắt Phương trình đường phân giác góc tạo hai đường thẳng 1 2 là: a1 x  b1y  c1 a12  b12  a2 x  b2 y  c2 a22  b22 A.1.1.5) Đa giác Đa giác đường gấp khúc khép kín Trong lập trình, đa giác lưu dãy đỉnh liên tiếp A1, A2, …,An Diện tích đại số đa giác khơng tự cắt xác định cơng thức: S  ( x1  x2 )( y1 +y )+(x -x )(y2 +y )+ +(x n -x1 )(y n +y1 ) S diện tích đa giác Đặc biệt, diện tích tam giác 1 aha  bhb  chc 2 1 = bc sin A  ca sin B  ab sin C 2 abc = 4R = pr S= = p( p  a)( p  b)( p  c)   AB  AC = = (công thức Hê–rông) ( xB  x A )( yC  y A )  ( xC  x A )( yB  y A ) A.1.1.6) Đường tròn Đường tròn (O; R) tập hợp điểm cách tâm O(x; y) khoảng cách R Đường trịn hồn tồn xác định ba số (x; y; R) với R > 10 A.1.2) Các giải thuật hình học tin học A.1.2.1) Khai báo kiểu đối tượng Pascal Type TPoint = Record x, y: Float; End; TVector = Tpoint; A.1.2.2) Biểu diễn tuyến tính       Cho vecto a , b c Hãy tìm số thực p, q để c  pa  qb Hai số p, q tính cơng thức   c  b Dx p    ab D   a  c Dy q    ab D     Nếu D  a  b  có cách biểu diễn tuyến tính vecto c qua   hai vecto a b (nghiệm p, q nhất)    Nếu D = 0, hai vecto a b song song với nhau, đó:    + (p; q) = (Nan; Nan) c song song với a b    + (p; q) = (Inf; Inf) c không song song với a b Ta viết hàm: function SolveSLE (Const a, b, c: TVector) : TVector;    nhận vào ba vecto a , b , c trả vecto có tọa độ (x; y) tương ứng với hệ số (p; q) cần tìm Function SolveSLE (const a, b, c: Tvector) : Tvector; Var D: Float; Begin D := a >< b; Result := Vector((c >< b)/D, (a >< c)/D); End; 11 A.1.2.3) Tìm giao điểm hai đường thẳng Trên mặt phẳng với hệ tọa độ Đề-các vng góc cho hai đường thẳng với phương trình tổng quát: A1x + B1y + C1 = 0; A2x + B2y + C2 = 0; Bài toán đặt xác định giao điểm hai đường thẳng cho    Đặt u  (A1;A ), v  ( B1 ; B2 ), w  (C1 ; C2 ) , toán trở thành toán biểu    diễn vector w qua tổ hợp tuyến tính hai vector u v    w  x.u  y.v Việc lại biện luận cho giá trị giao điểm tìm được, lúc ta viết thêm hàm vector tốn tử tích chéo sau: Hàm vector Function Vector (x, y : Float) : Tvector; Begin Result.x := x; Result.y := y; End; Tích chéo hai vector Operator >< (const u, v : Tvector) : Float; Begin Result := u.x * v.y – u.y * v.x; End; A.1.2.4) Tìm giao điểm hai đoạn thẳng Tương tự, ta tìm giao điểm hai đoạn thẳng AB CD: - Viết phương trình tổng quát hai đường thẳng AB CD; - Tìm giao điểm M hai đường thẳng; - Kiểm tra M có nằm đoạn thẳng AB đoạn thẳng CD hay khơng Phương trình đường thẳng qua hai điểm phân biệt A(xA; yA); B(xB; yB) (x – xA) * (yB – yA) = (y – yA) * (xB – xA) 12 A.1.2.5) Tìm giao điểm đoạn thẳng tia Tương tự, để tìm giao điểm đoạn thẳng AB tia CD, ta sử dụng phương pháp tương tự trên: Nếu M giao điểm đoạn thẳng AB tia CD tồn cặp số thực p, q, p  [0;1], q  [0; ) cho    AM  p AB    CM  qCD Áp dụng thuật tốn trên, có điều sau tìm cặp số p, q, ta không kiểm tra p, q  [0;1] mà kiểm tra p  [0;1] q > A.1.2.6) Tìm diện tích đa giác Bài tốn: Tính diện tích đa giác (lồi lõm không tự cắt) gồm n đỉnh A[1], A[2], …, A[n] (n>2) Thuật tốn: Ta giải toán cách chia đa giác thành n − tam giác tính tổng diện tích tam giác Tuy nhiên phương pháp phức tạp, ta làm cách khác sau: chia đa giác thành hình thang cách chiếu cạnh xuống trục hồnh (hoặc trục tung) Hình thang xác định cạnh A[i]A[i+1] có diện tích Abs(S) với: S = (A[i].x - A [i+1].x).(A[i].y + A[i+1].y) /2; sau gán đỉnh A[n+1] = A[1], ta tính diện tích toàn phần đa giác sau: Procedure dientich; Begin S: = 0; For i: =1 to n S := S + (A[i].x - A [i+1].x).(A[i].y + A[i+1].y); S: = (1/2) * Abs(S); End; 13 A.2) Một số tập áp dụng I Dạng mối quan hệ yếu tố hình học Bài Kiểm tra tính lồi lõm đa giác Trong mặt phẳng toạ độ có n điểm có toạ độ tương ứng (x1, y1), (x2, y2) ,…, (xn, yn) Biết n điểm cho theo thứ tự tạo thành đỉnh đa giác không tự cắt Yêu cầu: kiểm tra đa giác lồi hay lõm Dữ liệu vào: ghi file dagiac.inp dòng đầu ghi số n (n>2), n dòng tiếp theo, dòng thứ i ghi hai số thực theo thứ tự hoành độ tung độ đỉnh thứ i-1 đa giác Dữ liệu ra: ghi vào file dagiac.out gồm số 1, ghi đa giác lõm ghi đa giác lồi Thuật tốn: Gọi diện tích đa giác S0 Ta so sánh S0 với Si, Si diện tích đa giác thu từ đa giác ban đầu sau bỏ đỉnh thứ i (i=1, 2,…, n) Nếu $ i cho Si > S0 đa giác cho lõm (tại đỉnh thứ i), ngược lại đa giác cho lồi Chương trình: type read(f,a[i].x); read(f,a[i].y); end; close(f); a[n+1]:=a[1]; {Tinh dien tich da giac} s0:=0; for i:=1 to n s0:=s0+(a[i+1].xa[i].x)*(a[i+1].y+a[i].y); s0:=abs(s0)/2 diem=record x,y:real; end; var a:array [1 100] of diem; n,vt:integer; s0,s1:real; procedure init; var f:text;i:byte; begin assign(f,’dagiac.inp’); reset(f); readln(f,n); {while not eof(f) do} For i:= to n begin end; Procedure Inkq(i:byte); var f:text; begin assign(f,’dagiac.out’); 14 rewrite(f); write(f,i); close(f); s1:=s1+(b[j+1].xb[j].x)*(b[j+1].y+b[j].y); s1:=abs(s1)/2; if s1>s0 then begin inkq(0); halt end; end; inkq(1); End; begin init; resolve; end end; Procedure resolve; var b: array [1 50] of diem; i,j,k:byte; Begin for i:=1 to n begin for j:=1 to i-1 b[j]:=a[j]; for j:=i+1 to n+1 b[j-1]:=a[j]; s1:=0; for j:=1 to n-1 Bài Chia đa giác (đề thi HS giỏi quốc gia lớp 12, bảng B, năm 1999- 2000) Trong mặt phẳng toạ độ có n điểm có toạ độ tương ứng (x1, y1), (x2, y2),…,(xn, yn) Biết n điểm cho theo thứ tự tạo thành đỉnh đa giác không tự cắt Yêu cầu: chia đa giác cho thành hai đa giác cạnh nối hai đỉnh khơng kề cho diện tích chúng chênh lệch Dữ liệu vào: ghi file dagiac.inp: dòng đầu ghi số n (n>3), n dòng tiếp theo, dòng thứ i ghi hai số thực theo thứ tự hoành độ tung độ đỉnh thứ i-1của đa giác Dữ liệu ra: ghi vào file dagiac.out gồm hai số nguyên dương số thứ tự hai đỉnh nối cho thoả mãn điều kiện đầu Thuật toán: Ta đưa thuật toán đơn giản sau: thử tìm cách chia ghi nhận lại cách chia tốt Dễ thấy độ phức tạp thuật toán trường hợp O(n3) Chương trình: type diem = record x,y:real; end; 15 var a:array [1 100] of diem; n,vt1,vt2:integer; s0,s1,del:real; procedure init; var f:text;i:byte; begin assign(f,’dagiac.inp’); reset(f); readln(f,n); for i:= to n begin read(f,a[i].x); read(f,a[i].y); end; close(f); a[n+1]:=a[1]; s0:=0; for i:=1 to n s0:=s0+(a[i+1].xa[i].x)*(a[i+1].y+a[i].y); s0:=abs(s0)/2; del:=s0; end; Procedure resolve; var b:array [1 50] of diem; i,j,k,h:byte; f:text; Begin for i:=1 to n-2 begin for h:=i+2 to n-1 begin k:=0; for j:= i to h begin inc(k); b[k]:=a[j]; end; b[k+1]:=b[1]; s1:=0; for j:=1 to k s1:=s1+(b[j+1].xb[j].x)*(b[j+1].y+b[j].y); s1:=abs(s1)/2; if del>abs(2*s1-s0) then begin vt1:=i; vt2:=j; del:=abs(2*s1-s0); end; end; end; assign(f,’dagiac.out’); rewrite(f); write(f,vt1,’ ’,vt2); close(f); End; begin init; resolve; end Bài Cho đa giác điểm Hãy cho biết điểm cho có thuộc đa giác hay khơng (điểm thuộc cạnh đa giác coi thuộc đa giác) Dữ liệu vào: n (số đỉnh đa giác) x1, y1 … xi, yi (là tọa độ đỉnh đa giác theo chiều kim đồng hồ) xn yn x0, y0: tọa độ điểm cần xét Dữ liệu ra: 'Thuộc đa giác' 'Không thuộc đa giác' Thuật toán: - Qua điểm A cần xác định, dựng tia Ax’ cho Ax’//Ox - Xác định số giao điểm tia Ax’ với cạnh đa giác - Xét số giao điểm + lẻ: điểm A thuộc đa giác + chẵn: điểm A khơng thuộc đa giác  Đặc biệt hóa a Chúng ta xét trường hợp đặc biệt Ta thay 'đa giác' tam giác Khi xét tam giác, nảy 'ý tưởng' khác từ nhận xét sau: Xét điểm M thuộc ABC thì: SABC = SMAB + SMBC + S MAC Cịn M khơng thuộc ABC thì: SABC < SMAB + SMBC + S MAC Như vậy, với tam giác, ta có giải thuật sau: - Tính SABC {có thể dùng cơng thức Herong hay công thức:   AB  AC S= } b Cho tứ diện Hãy cho biết tâm hình cầu ngoại tiếp tứ diện nằm hay tứ diện II Dạng lớp tốn diện tích Tính diện tích đa giác cho trước Đây tốn quen thuộc, cần nhớ để vận dụng toán khác Bài tốn diện tích phủ: Cho số hình chữ nhật, tính diện tích mà hình chữ nhật phủ VD: - Tính SMAB + SMBC + S MAC =S’ - Xét: + SABC = S’ → M thuộc ABC + SABC ≠ S’ → M khơng thuộc ABC Tổng qt hóa toán 2: Bây giờ, thử tổng quát toán từ 'tam giác' lên 'tứ diện' xem sao: {Các tọa độ điểm có dạng (x,y,z)} Chúng ta xuất phát từ nhận xét: - M thuộc ABCD VABCD = VMABC + VMBCD +VMCDA + VMDAB - M khơng thuộc ABCD VABCD < VMABC + VMBCD +VMCDA + VMDAB Chúng ta hồn tồn tính dễ dàng thể tích tứ diện cơng thức: Chính thế, giải thuật trở nên đơn giản hơn: - Tính V’ = VMABC + VMBCD +VMCDA + VMDAB - Xét: + Nếu V’=V suy M thuộc tứ diện + Nếu V’ ≠ V suy M khơng thuộc tứ diện Qua tốn trên, bạn tham khảo toán tổng hợp sau: a Cho đa giác mặt phẳng Đa giác lõm Hãy cho biết số giao điểm với đa giác khác (đa giác lồi) VD: b Cho tứ diện Hãy cho biết tâm hình cầu ngoại tiếp tứ diện nằm hay ngồi tứ diện A.3) Một số tập đề nghị Bài 1: Diện tích phủ tam giác Trên mặt phẳng cho N tam giác xác định toạ độ ba đỉnh (x1i, y1i), (x2i, y2i), (x3i, y3i) (i=1,2 ,N) Tất toạ độ số ngun Cần tìm diện tích phần mặt phẳng bị phủ tam giác Giả thiết tất tam giác không suy biến (nghĩa đỉnh tam giác ba điểm phân biệt không nằm đường thẳng) Input: File văn TAMGIAC.INP  Dòng ghi số nguyên dương N (N≤10)  Dòng thứ i N dòng chứa số nguyên x1i, y1i, x2i, y2i, x3i, y3i xác định tam giác thứ i (i=1,2, ,N) Các số ngun có giá trị tuyệt đối khơng vượt 1000 Output: Ghi file TAMGIAC.OUT số giá trị diện tích cần tìm với chữ số phần thập phân Ví dụ: TAMGIAC.INP TAMGIAC.OUT 2.00 002012 002011 Bài 2: Đa giác Cho N đa giác lồi thoả mãn tính chất sau: - Với đa giác ln có đa giác mà điểm nằm đa giác - Các cạnh chúng khơng có điểm chung Bài toán đặt là: Với đa giác i, có đa giác N đa giác nói bao (i nằm đa giác)? Dữ liệu vào: Vào từ file văn DAGIAC.INP - Dòng ghi số tự nhiên N (3N10000) - Dịng thứ i+1 ghi thơng tin đa giác thứ i, bao gồm: Số Si số đỉnh đa giác; Si cặp số nguyên hoành độ tung độ đỉnh đa giác Các số dòng cách dấu cách Dữ liệu ra: Ghi file văn DAGIAC.OUT gồm N dòng, dòng thứ i ghi số lượng đa giác bao đa giác i Ví dụ: DAGIAC.INP DAGIAC.OUT 4 1 15 15 8 493964643 11 11 7 3848568 Bài 3: Chia đất Một người cha để lại mảnh đất có hình dạng đa giác lồi làm thừa kế cho hai người Trong di chúc ơng u cầu hai người phải chia mảnh đất thành hai phần có diện tích theo đường ranh giới thảng dọc theo phương Nam - Bắc Bạn người giao giúp hai người thực di chúc Hãy viết chương trình tìm cách chia Giả sử mảnh đất đa giác lồi với đỉnh A1A2 An nằm mặt phẳng toạ độ trục Oy nằm theo hướng Nam - Bắc, Ox theo hướng Tây - Đông Input: Cho file CHIADAT.INP  Dòng ghi N số đỉnh đa giác (N≤5000)  Trong N dòng tiếp theo, dòng thứ i ghi hai số nguyên xi, yi hoành độ tung độ điểm thứ i số N đỉnh đa giác (các đỉnh đa giác liệt kê theo chiều xuôi ngược kim đồng hồ) Output: Ghi file văn CHIADAT.OUT số thực x0 với ý nghĩa đường ranh giới dùng để chia đất đường thẳng x=x0 (x0 viết với chữ số phần thập phân) Ví dụ: CHIADAT.INP CHIADAT.OUT 1.0000 0 2 2 Bài 4: POLYGON Đức vua vương quốc XYZ tổ chức kén rể cho cơng chúa Vì vậy, ơng đặt u cầu cao cho rể tương lai Để trở thành rể ngài, chàng trai thi thể Sau vượt qua phần thi địi hỏi sức khoẻ, lòng dũng cảm, … họ gặp phải thử thách vơ khó khăn, phần thi nhanh nhạy thông minh Đức vua cho người miếng bìa hình đa giác lồi N đỉnh Đức vua yêu cầu chàng trai vẽ N-3 đường chéo cho đường chéo khơng có điểm chung khác đầu mút Với cách vẽ vậy, thu N-2 hình tam giác Đức vua yêu cầu họ tìm cách chia:  Một cách chia cho tam giác có diện tích lớn N-2 tam giác lớn  Một cách chia cho tam giác có diện tích lớn N-2 tam giác nhỏ Sau nhà vua đưa hình dạng đa giác lồi, họ có giây để đưa đáp án Người đưa đáp án nhanh chọn làm phò mã Bạn người lọt vào vòng thi Hãy chứng tỏ khả đi! Input: POLYGON.INP  Dịng ghi số nguyên N số đỉnh đa giác  Trong n dòng sau, dòng ghi cặp số nguyên tọa độ đỉnh đa giác Các đỉnh liệt kê theo chiều kim đồng hồ Output: POLYGON.OUT Trong trường hợp, bạn cần đưa N-3 dòng Mỗi dòng ghi số hiệu đỉnh mà bạn nối N-3 dòng trường hợp cần viết trước N-3 dòng trường hợp Giới hạn:  ≤ N ≤ 200  Các tọa độ số nguyên có trị tuyệt đối không 106  Thời gian: 1s/test  Bộ nhớ: 1MB Ví dụ: POLYGON.INP 00 02 14 22 20 Trường hợp POLYGON.OUT 13 35 14 24 Trường hợp Bài 5: CẮT BÁNH Để ghi tên vào danh sách kỷ lục Thế giới (Ghiness), David bạn làm bánh khổng lồ có hình đa giác lồi Sau kỷ lục ghi nhận, Mọi người định cắt bánh chia cho thành viên tham gia làm bánh theo qui luật sau: Mỗi lần chọn đỉnh đa giác cắt bỏ đỉnh cách cắt qua đỉnh kề bên Phần bánh hình tam giác có từ lần cắt chia cho thí sinh Cơng việc cắt bánh tiếp tục bánh có dạng tứ giác Miếng bánh cuối giành cho người cắt bánh David chọn làm người cắt bánh lẽ dĩ nhiên, muốn cắt bánh cho phần có diện tích lớn u cầu: Hãy tính xem phần diện tích lớn miến bánh hình tứ giác mà David có Dữ liệu: Trong file văn CAKE.INP gồm  Dòng thứ ghi số N số đỉnh đa giác  N dòng cặp số nguyên biểu diễn đỉnh đa giác Các đỉnh liệt kê theo chiều kim đồng hồ Kết quả: Xuất file văn CAKE.OUT gồm số ghi diện tích lớn tứ giác tìm Kết lấy xác tới chữ số phần thập phân Ví dụ: CAKE.INP CAKE.OUT 21.0 2 8 Giới hạn :  ≤ N ≤ 1500  |xi|, |yi| ≤ 15000  Thời gian: giây  Bộ nhớ : 1M A.4) Kết luận Tin học Toán học hai môn khác biệt không độc lập với Biết vận dụng kết suy luận, chứng minh từ toán học làm cho toán tin giải thật đơn giản, kết tốt Như vậy, Tin học sử dụng Toán học nhiều Đặc biệt toán hình học tính tốn phân tích, suy luận dựa vào định lý, bổ đề toán học mà Tin học xây dựng thuật toán, giải thuật hữu dụng, ngày việc tính tốn hình học tốn khơng cịn vấn đề khó khăn trước chưa có sử dụng tin học B/ KẾT QUẢ NGHIÊN CỨU Qua trình nghiên cứu vận dụng đề tài chuyên đề “ỨNG DỤNG LÝ THUYẾT TOÁN ĐỂ GIẢI CÁC BÀI TOÁN TIN” phần – Hình học tính tốn, tơi nhận thấy vấn đề giúp ích nhiều cho học sinh chuyên tin học việc học, giúp em không “ngán ngại” chuyên đề nữa, em hiểu vận dụng tốt phần liên quan đến toán học tin học (như thuật toán kiểm tra điểm nằm đa giác, diện tích đa giác, giao điềm đường thẳng…); số em bước đầu sáng tạo toán (tuy tốn cịn “đơn giản”) Riêng thân tiếp tục nghiên cứu sâu chuyên đề hy vọng “làm rõ nữa” để học sinh chuyên tin thích học đạt nhiều thành tích III PHẦN KẾT LUẬN III.1/ Kết luận Tôi viết đề tài nghiên cứu nhằm mục đích trao đổi với Q Thầy Cơ dạy chun đề bồi dưỡng học sinh giỏi Tin học việc “hệ thống” kiến thức, vài kỹ năng, ứng dụng tốn học vào lập trình giải tốn tin Vì kiến thức thời gian cịn nhiều hạn chế nên nghiên cứu cịn có thiếu sót, tơi chân thành đón nhận góp ý Quý Thầy Cô Xin chân thành cảm ơn III.2/Tài liệu tham khảo Nguyễn Xuân Huy, 2008, tuyển toán tin nâng cao cho học sinh sinh viên giỏi “Sáng tạo thuật tốn lập trình”, NXB Giáo dục, tập 1, tập 2, tập Hồ Sĩ Đàm, Đỗ Đức Đơng, Lê Minh Hồng, Nguyễn Thanh Hùng, 2009, “Tài liệu giáo khoa chuyên tin”, NXB Giáo dục, 1, 2, 3 Donald E Knuth, The Art of computer programming Kenneth H Rosen, Toán học rời rạc ứng dụng tin học, NXB Giáo dục, 2007, người dịch Phạm Văn Thiều Đặng Hữu Thịnh Các đề thi HSG Olympic 30/4 Các đề thi HSG ĐBSCL Các đề thi HSG Quốc gia Các đề thi HSG Quốc tế Một số trang web: http://vnoi.info/index.php? Olympic Tin học Việt Nam 10 ... khăn trước chưa có sử dụng tin học B/ KẾT QUẢ NGHIÊN CỨU Qua trình nghiên cứu vận dụng đề tài chuyên đề ? ?ỨNG DỤNG LÝ THUYẾT TOÁN ĐỂ GIẢI CÁC BÀI TOÁN TIN? ?? phần – Hình học tính tốn, tơi nhận thấy... TOÁN ĐỂ GIẢI CÁC BÀI TỐN TIN? ?? (Phần 3: Hình học tính tốn) I.2/ Mục tiêu nghiên cứu Như biết, tốn học có ảnh hưởng lớn đến lĩnh vực sống Các tốn tin có thuật toán dựa sở lý thuyết toán học vững... Kết luận Tin học Toán học hai môn khác biệt không độc lập với Biết vận dụng kết suy luận, chứng minh từ toán học làm cho toán tin giải thật đơn giản, kết tốt Như vậy, Tin học sử dụng Toán học nhiều

Ngày đăng: 28/12/2017, 17:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan