Go Back   Cựu Học Sinh Lê Quý Đôn - Long An > :: Góc Học Tập :: > Tin học > Học lập trình

Học lập trình Pascal , C+ , C++ , VB

Những thuật toán hay thi HSG Tin học

Những thuật toán hay thi HSG Tin học

this thread has 48 replies and has been viewed 51835 times

Gởi Ðề Tài Mới Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-01-1970, 07:00 AM   #1
Hồ sơ
myhanh
 
myhanh's Avatar
 
Tham gia ngày: Dec 2004
Cư ngụ: Love Planet
Tuổi: 43
Số bài viết: 7,404
Tiền: 0
Thanks: 2,122
Thanked 5,465 Times in 2,040 Posts
myhanh is on a distinguished road
Default

CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ
2.Cây khung của đồ thị:

Định nghĩa:
Giả sử G=(V,E) là đồ thị vô hướng liên thông. Cây T=(V,F), F là tập con của E được gọi là cây khung của đồ thị.
Áp dụng thuật toán tìm kiếm theo chiều rộng, chiều sâu để xây dựng cây khung của đồ thị vô hướng liên thông. Trong cả hai trường hợp mỗi khi ta đến được đỉnh mới u từ đỉnh v thì cạnh (v,u) sẽ được kết nạp vào cây khung
Code:
PROCEDURE STREE_DFS(v);
(* Tìm kiếm theo chiều sâu tìm cây khung T của đồ thị vô hướng liên thông G cho bởi danh sách kề, các biến chuaxet,ke,T là toàn cục*)
BEGIN
  chuaxet[v]:=false;
  FOR u in ke(v) DO
      IF chuaxet[u] THEN
          BEGIN
                T:=T U (v,u);
                   STREE_DFS(u);
          END;
END;
BEGIN
  FOR u in V DO chuaxet[u]:=true;
  T:=Ø;
  STREE_DFS(Root);
 END.

Bài tập:

Viết thủ tục STREE_BFS(v).
__________________
Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick.
My Technical Blog

thay đổi nội dung bởi: myhanh, 03-06-2008 lúc 08:52 AM.
myhanh is offline   Trả Lời Với Trích Dẫn
Đã có 2 thành viên gửi lời cám ơn đến myhanh vì bạn đã đăng bài:
Aidanmix (07-02-2017), Fajedgeaidele (26-11-2016)
Old 01-01-1970, 07:00 AM   #2
Hồ sơ
myhanh
 
myhanh's Avatar
 
Tham gia ngày: Dec 2004
Cư ngụ: Love Planet
Tuổi: 43
Số bài viết: 7,404
Tiền: 0
Thanks: 2,122
Thanked 5,465 Times in 2,040 Posts
myhanh is on a distinguished road
Default

CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ
3.Bài toán cây khung nhỏ nhất:

Cho đồ thị G=(V,E) là đồ thị vô hướng , liên thông với
V={v1,v2,...,vn}, E= m cạnh với ∀e ∈ E, ∃C(e)>0: C(e) gọi là độ dài của nó.
H=(V,T) là cây khung của đồ thị G. Ta gọi độ dài C(H) của cây khung H là tổng độ dài các cạnh của nó
C(H) = ΣC(e), e ∈ H.
Tìm H sao cho C(H) nhỏ nhất.
__________________
Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick.
My Technical Blog

thay đổi nội dung bởi: myhanh, 03-06-2008 lúc 08:52 AM.
myhanh is offline   Trả Lời Với Trích Dẫn
Đã có 4 thành viên gửi lời cám ơn đến myhanh vì bạn đã đăng bài:
AndrewEased (22-11-2016), Fajedgeaidele (17-11-2018), Larset (22-12-2016), RidgeSt (29-09-2018)
Old 01-01-1970, 07:00 AM   #3
Hồ sơ
quemoi
Junior Member
 
Tham gia ngày: Dec 2005
Số bài viết: 7
Tiền: 25
Thanks: 0
Thanked 13 Times in 2 Posts
quemoi
Default

Ngoài các thuật toán ra, trong các kỳ thi Olympic các bạn đi thi cần một số chiến thuật và kinh nghiêm. Ví dụ:
1. Ban giám khảo chấm điểm tự đông bằng chương trình, không xem source code, cho nên đầu tiên là chương trình của các bạn cần phải chạy, cho kết quả được đầu vào đầu ra đúng. Trong một số trường hợp thì không tìm được thuật giải hoàn chỉnh với một khoảng thời gian cho phép, lúc đó bạn cứ bình tĩnh, cố gắng tìm ra được một thuật giải càng đúng nhiều test càng tốt.

2. Có một số vấn đề mà trong toán học có thể hơi khác với trong tin học, lúc các bạn làm bài nếu bị một tính "ì" trong toán học thì các bạn có thể dẫn đến KQ sai(không đúng với đầu ra của test). Chẳng hạn như là so sánh 2 số thực, trong toán học 2 số thực bằng nhau là a=b, nhưng trong một số bài toán của tin học thì các bạn phải thay a=b bởi 1 hàm số abs(a-B)<saiso vì số thực của Tin học không "chính xác" như là số thực của toán học. VD so sánh a*a=2*b*b, nếu như b=1, a=1.4142... thì dấu bằng cũng có thể không xảy ra. Các bạn phải chú ý sai số mà bài toán đưa ra.
Tuy những vấn đề này đơn giản nhưng có nhiều bạn làm rất tốt về thuật toán vẫn bị điểm thấp, nhất là các bạn thiếu "kinh nghiêm trận mạc".

Bữa khác tiếp tục nhé............
quemoi is offline   Trả Lời Với Trích Dẫn
Đã có 7 thành viên gửi lời cám ơn đến quemoi vì bạn đã đăng bài:
BrantGam (30-09-2018), Fajedgeaidele (22-11-2016), KeganWaw (02-10-2018), Killianvar (01-05-2017), myhanh (24-11-2012), RidgeSt (29-09-2018), Yorikeraf (06-04-2017)
Old 01-01-1970, 07:00 AM   #4
Hồ sơ
myhanh
 
myhanh's Avatar
 
Tham gia ngày: Dec 2004
Cư ngụ: Love Planet
Tuổi: 43
Số bài viết: 7,404
Tiền: 0
Thanks: 2,122
Thanked 5,465 Times in 2,040 Posts
myhanh is on a distinguished road
Default

Mấy ngày gần đây myhanh quá bận với thi cử nên không có ghé qua diễn đàn. Hôm nay thi xong myhanh xin tiếp tục chủ đề này.
Thứ nhất là ý kiến của quemoi rất hay. Văn ôn thì võ luyện. Cái kinh nghiệm trận mạc của quemoi chỉ là dùng để luyện gà chọi thôi. Ở đây myhanh muốn bàn về khía cạnh kiến thức. Cả hai mặt này bổ sung cho nhau, không thể xem nhẹ mặt nào đâu nha :lol: .
__________________
Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick.
My Technical Blog
myhanh is offline   Trả Lời Với Trích Dẫn
Đã có 3 thành viên gửi lời cám ơn đến myhanh vì bạn đã đăng bài:
Benkt (20-09-2016), Galenfar (30-09-2018), glendacq11 (25-09-2016)
Old 01-01-1970, 07:00 AM   #5
Hồ sơ
quemoi
Junior Member
 
Tham gia ngày: Dec 2005
Số bài viết: 7
Tiền: 25
Thanks: 0
Thanked 13 Times in 2 Posts
quemoi
Default

Trích:
Originally posted by myhanh@Jan 9 2006, 12:27 PM
Mấy ngày gần đây myhanh quá bận với thi cử nên không có ghé qua diễn đàn. Hôm nay thi xong myhanh xin tiếp tục chủ đề này.
Thứ nhất là ý kiến của quemoi rất hay. Văn ôn thì võ luyện. Cái kinh nghiệm trận mạc của quemoi chỉ là dùng để luyện gà chọi thôi. Ở đây myhanh muốn bàn về khía cạnh kiến thức. Cả hai mặt này bổ sung cho nhau, không thể xem nhẹ mặt nào đâu nha :lol: .
Đúng là không được xem nhẹ mặt nào, trong các kỳ thi thì kiến thức thuật toán vẫn là quan trọng nhất, nhưng bên cạnh đó cần chú ý một số vấn đề mà minh đưa ra. Thực tế là đã có nhiều bạn HSSV ở các trường phổ thông và ĐH đã gặp phải những vấn đề này mặc dù rất giỏi. Mục tiêu của chúng ta là đem lại tiếng tăm cho HSSV Miền Nam chúng ta nói chung và quê hương Long An nói riêng, nên mình cũng tham gia đóng góp một vài ý kiến nho nhỏ cho đàn em của chúng ta.

3. Vấn đề thứ 3 trong các kỳ thi đó là thuật giải sắp xếp:
Có nhiều thuật giải sắp xếp khác nhau, nhưng ở các kỳ thi thì các bạn sẽ thường dùng đến 2 thuật giải là Bubble Sort và Quick Sort.
- Thuật giải Bubble sort cài đặt rất nhanh, dễ, dễ dàng kiểm tra tính đúng đắn, tuy nhiên lại chiếm thời gian lớn khi thực thi (0(n^2)).
- Thuật giải Quick sort thì thực thi nhanh nhưng lại đòi hỏi thời gian cài đặt lâu hơn 1 chút.
Vì vậy tuỳ vào yêu cầu của bài toán(số phần tử cực đại và thời gian cho 1 test) mà các bạn chọn 1 thuật giải thích hợp. Đã từng có bạn đi thi viết đúng thật giải hoàn toàn nhưng đề bài cho số phần tử lớn, và thời gian để thực thi 1 test ít, chương trình của bạn ấy không kịp ghi KQ ra file xuất cho nên đã không đạt điểm tuyệt đối do sai ở một số test, thật đáng tiếc!!!!!

thay đổi nội dung bởi: myhanh, 03-06-2008 lúc 09:02 AM.
quemoi is offline   Trả Lời Với Trích Dẫn
Đã có 6 thành viên gửi lời cám ơn đến quemoi vì bạn đã đăng bài:
BrantGam (28-09-2018), Davidjogue (09-07-2019), Galenfar (22-09-2016), RidgeSt (29-09-2018), TeddyBanny (14-11-2016), UrkrassFuct (22-09-2016)
Old 01-01-1970, 07:00 AM   #6
Hồ sơ
myhanh
 
myhanh's Avatar
 
Tham gia ngày: Dec 2004
Cư ngụ: Love Planet
Tuổi: 43
Số bài viết: 7,404
Tiền: 0
Thanks: 2,122
Thanked 5,465 Times in 2,040 Posts
myhanh is on a distinguished road
Post

CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ
4.Thuật toán Kruskal:

Xây dựng tập cạnh T của cây khung nhỏ nhất H=(V,T). Sắp xêp các cạnh của đồ thị G theo thứ tự không giảm của độ dài.
Bắt đầu T = Ø
Ở mỗi bước duyệt trong danh sách cạnh đã sắp xếp, từ cạnh có độ dài nhỏ đến cạnh có độ dài lớn hơn để tìm ra cạnh mà việc bổ sung vào tập T không tạo thành chu trình trong tập này.
Thuật toán sẽ kết thúc khi ta thu được tập T gồm có n-1 cạnh.
Code:
 PROCEDURE KRUSKAL;
  BEGIN
   Sắp xếp các cạnh theo chiều không giảm;
    T = Ø;
  WHILE ( |T| < n-1 ) AND ( E <> Ø) DO
      BEGIN
           Chọn e in E là cạnh có độ dài nhỏ nhất.
             E:= E - {e};
             IF (T + {e}) không chứa chu trình THEN
             T:=T+{e}
            END;
      END;
__________________
Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick.
My Technical Blog

thay đổi nội dung bởi: myhanh, 24-08-2012 lúc 09:18 PM.
myhanh is offline   Trả Lời Với Trích Dẫn
Đã có 5 thành viên gửi lời cám ơn đến myhanh vì bạn đã đăng bài:
AldenSi (03-10-2018), Galenfar (29-09-2018), HatlodPi (14-01-2017), kenzaki (31-10-2008), TemmyVino (25-03-2017)
Old 07-03-2012, 05:54 PM   #7
Hồ sơ
nguyenchican
Junior Member
 
Tham gia ngày: Mar 2012
Số bài viết: 13
Tiền: 500
Thanks: 1
Thanked 70 Times in 5 Posts
nguyenchican is on a distinguished road
Default Ðề: Những thuật toán hay thi HSG Tin học

Trích:
Nguyên văn bởi myhanh View Post
CÂY VÀ CÂY KHUNG CỦA ĐỒ THỊ
2.Cây khung của đồ thị:

Định nghĩa:
Giả sử G=(V,E) là đồ thị vô hướng liên thông. Cây T=(V,F), F là tập con của E được gọi là cây khung của đồ thị.
Áp dụng thuật toán tìm kiếm theo chiều rộng, chiều sâu để xây dựng cây khung của đồ thị vô hướng liên thông. Trong cả hai trường hợp mỗi khi ta đến được đỉnh mới u từ đỉnh v thì cạnh (v,u) sẽ được kết nạp vào cây khung
Code:
PROCEDURE STREE_DFS(v);
(* Tìm kiếm theo chiều sâu tìm cây khung T của đồ thị vô hướng liên thông G cho bởi danh sách kề, các biến chuaxet,ke,T là toàn cục*)
BEGIN
  chuaxet[v]:=false;
  FOR u in ke(v) DO
      IF chuaxet[u] THEN
          BEGIN
                T:=T U (v,u);
                   STREE_DFS(u);
          END;
END;
BEGIN
  FOR u in V DO chuaxet[u]:=true;
  T:=Ø;
  STREE_DFS(Root);
 END.

Bài tập:

Viết thủ tục STREE_BFS(v).
Nó giống Pascal thé trời
__________________
Cần lực sĩ
Cần tài trợ hosting và domain, ai có lòng hảo tâm cho em xin 1 con
nguyenchican is offline   Trả Lời Với Trích Dẫn
Đã có thành viên gửi lời cám ơn đến nguyenchican vì bạn đã đăng bài:
myhanh (10-09-2016)
Old 10-09-2016, 09:08 AM   #8
Hồ sơ
myhanh
 
myhanh's Avatar
 
Tham gia ngày: Dec 2004
Cư ngụ: Love Planet
Tuổi: 43
Số bài viết: 7,404
Tiền: 0
Thanks: 2,122
Thanked 5,465 Times in 2,040 Posts
myhanh is on a distinguished road
Default Ðề: Những thuật toán hay thi HSG Tin học

Trích:
Nguyên văn bởi nguyenchican View Post
Nó giống Pascal thé trời
Thế thì có vấn đề gì không bạn.
Thật ra nó là mã giả (pseudo code)
__________________
Necessity is the mother of in(ter)vention.
Speak softly & carry a big stick.
My Technical Blog
myhanh is offline   Trả Lời Với Trích Dẫn
Trả lời



Quyền Sử Dụng Ở Diễn Ðàn
Bạn không được quyền gởi bài
Bạn không được quyền gởi trả lời
Bạn không được quyền gởi kèm file
Bạn không được quyền sửa bài

vB code đang Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Chuyển đến


Website sử dụng phần mềm vBulletin phiên bản 3.6.8
do Công ty TNHH Jelsoft giữ bản quyền từ 2000 - 2024.
Múi giờ GMT +7. Hiện tại là 03:56 PM.

Hội CHS Lê Quý Đôn-Long An giữ bản quyền nội dung của website này

Tự động[F9]TELEX VNI VIQR VIQR* TắtKiểm chính tảDấu cũ
phan mem quan ly ban hang | thuê vps