Thuật toán nào cho bài toán sau đây
#1
Đã gửi 01-06-2005 - 16:12
Cho : n đoạn thẳng đồng phẳng, các đoạn thẳng đó không cắt nhau. một đoạn thẳng bất kỳ được giới hạn bởi 2 điểm Ai (xi, yi, zi) và Bi (xi, yi, zi).
Tìm tất cả các hình đa giác nhỏ nhất được tạo bởi n đoạn thẳng đó
( nếu bác nào cần hình vẽ minh họa, hãy để lại địa chỉ mail em gửi hình, ở đây em không biết làm cách nào để gửi lên cả )
#2
Đã gửi 10-06-2005 - 09:58
#3
Đã gửi 10-06-2005 - 10:17
Khoa.
#4
Đã gửi 10-06-2005 - 11:16
to tvkhoa71 : các đoạn thẳng đó có thể giao nhau ở đầu mút ( có thể coi là không cắt nhau). Đây chính là dạng bài toán que diêm đó tvkhoa71 à, bạn có thể hiểu đầu bài cụ thể hơn như thế này:Hơn nữa các đọan thẳng này lại không cắt nhau
Khoa.
+Đầu vào:
+Cho các đoạn thẳng không cắt nhau từng đôi một(có thể giao nhau ở đầu mút)
+Tọa độ các điểm ở mỗi đầu của đoạn thẳng
+Yêu cầu:
+Tìm tất cả các hình đa giác tạo bởi các đoạn thẳng nói trên
#5
Đã gửi 14-07-2005 - 10:39
Tôi có 1 cách làm này:
_ Gọi A là tập tất cả các đầu mút của các đoạn thẳng. Như vậy đỉnh của các đa giác chỉ nằm trong tập này.
_ Tìm xem mỗi điểm trong A nằm trên đoạn thẳng nào.
_ Xây dựng đồ thị G đỉnh là các điểm trong A.
_ Nếu 2 điểm cùng nằm trên 1 đoạn thẳng thì nối 2 điểm đó = 1 cung.
_ Dùng depth first search (loang sâu) để tìm tất cả các chu trình trong đồ thị. Mỗi chu trình là 1 đa giác.
Độ phức tạp của tt là n^2.
Có gì cần hỏi thêm thì add nick YM mình vào: ntsonicon . Ở đây không có nhiều người trả lời được câu hỏi của bạn đâu. Cứ nhìn những thread khác thì rõ.
#6
Đã gửi 14-07-2005 - 17:30
Bài này thì không khó nhưng tìm một lời giải tối ưu thì khó.
Tuy nhiên, máy tính mạnh như hiện nay sẽ dư sức với thuật toán bét nhất.
PS:Mình có thử sang diễn đàn tin học xem thử nhưng tồi lắm.
#7
Đã gửi 18-07-2005 - 12:38
#8
Đã gửi 18-07-2005 - 20:07
Có thể đó là sự thật, nhưng cách nói dễ gây hiểu lầm là có ý chê bai, vốn là một điều không nên làm trong một nơi trao đổi có tính thân hữu. "Lời nói không mất tiền mua..." sau này bạn ntson tập ứng xử tế nhị hơn nhé....
Có gì cần hỏi thêm thì add nick YM mình vào: ntsonicon . Ở đây không có nhiều người trả lời được câu hỏi của bạn đâu. Cứ nhìn những thread khác thì rõ.
violets are blue,
Fermat is dead,
but his theorem is true. </span>
#9
Đã gửi 19-07-2005 - 19:16
#10
Đã gửi 20-07-2005 - 08:34
Dù sao thì vẫn tốt hơn các diễn đàn khác.Cái forum này rất hay nhưng có vẻ mọi người không nhiệt tình lắm. Có quá nhiều câu hỏi nhưng không có câu trả lời hoặc chỉ nói qua loa theo kiểu biết nhưng mà không thèm nói. Diễn đàn là nơi mọi người trao đổi, đóng góp xây dựng. Nếu chỉ có đi hỏi hoặc đọc câu hỏi và câu trả lời của người khác thì lấy đâu những bài viết có chất lượng. Đó là ý kiến của mình.
Mọi người không có thời gian nhiều đâu.
#11
Đã gửi 20-07-2005 - 12:40
#12
Đã gửi 17-03-2006 - 23:39
HungCTran
#13
Đã gửi 25-03-2006 - 21:33
#14
Đã gửi 26-03-2006 - 11:59
Có thể làm đơn giản là duyệt qua tất cả các đoạn thẳng, ta sẽ được 2 đỉnh mút của đoạn thẳng đó, đây cũng là 2 đỉnh trong đồ thị đang xây dựng. Ta thêm 1 cung nối 2 đỉnh này của đồ thị.Chao NTSon cách của bạn thấy có vẻ rất hay, câu chữ rất là xuyên suốt, nhưng bạn dùng thuật toán gì để xử lý "Nếu 2 điểm cùng nằm trên 1 đoạn thẳng thì nối 2 điểm đó = 1 cung", xin hết.
HungCTran
To ntson : Thuật toán DFS có thể đảm bảo tìm được tất cả các chu trình của đồ thị được không ?
1 người đang xem chủ đề
0 thành viên, 1 khách, 0 thành viên ẩn danh