Hiện tại, tôi đang phát triển một chương trình giải quyết (nếu có thể) bất kỳ mê cung nào có kích thước từ 3X4 đến 26x30. Tôi đại diện cho các đồ thị bằng cách sử dụng cả hai ma trận adj (thưa thớt) và danh sách adj. Tôi muốn biết làm thế nào để sản xuất tổng thời gian được thực hiện bởi DFS để tìm giải pháp bằng cách sử dụng một và sau đó là phương pháp khác. Lập trình, làm cách nào tôi có thể tạo ra điểm chuẩn như vậy?Chuẩn mực biểu diễn biểu đồ
Trả lời
Một bảng hữu ích để làm việc với biểu đồ triển khai khác nhau:
OPERATION EDGE LIST ADJ LIST ADJ MATRIX
degree(v) O(m) O(d(v)) O(n)
incidentEdges(v) O(m) O(d(v)) O(n)
areAdjacent(v1,v2) O(m) O(min(d(v1),d(v2)) O(1)
addVertex(v) O(1) O(1) O(n²)
addEdge(v) O(1) O(1) O(1)
removeVertex(v) O(m) O(m) O(n²)
removeEdge(e) O(m) O(d(v1)+d(v2)) O(1)
memory O(m+n) O(m+n) O(n²)
nơi m
là số cạnh, n
là số đỉnh và d(vertex)
là số phần tử trong kề đỉnh danh sách .. thực hiện ma trận adj có một O(n²)
để thêm và loại bỏ các đỉnh vì bạn phải phân bổ lại ma trận ..
Chỉ cần chuẩn bị điều này cho một bài viết, tại sao tôi có nó sẵn sàng :)
Điều này không liên quan trực tiếp đến điểm chuẩn, vì bạn thường nghiên cứu hoạt động nào bạn cần và chọn thực hiện đúng cho nhu cầu của bạn, vì vậy đó là loại chuẩn "lý thuyết" mà bạn thực hiện bằng cách nghiên cứu những gì bạn sẽ triển khai. Nếu không, bạn chỉ có thể đo thời gian mà mã của bạn cần làm toàn bộ công việc với cả hai triển khai và so sánh nó.
CHỈNH SỬA: vì bạn sử dụng ma trận thưa thớt sự phức tạp của hoạt động có thể thay đổi một chút (chủ yếu là tệ hơn một chút, vì bạn đang giao dịch bộ nhớ tốc độ).
EDIT2: ok, bây giờ mà tôi biết rằng đây là Java nó sẽ là công bằng đơn giản:
long before = System.nanoTime();
/* execution of your algorithm */
long elapsed = System.nanoTime() - before;
trả lời là trong nano giây và độ chính xác không được bảo đảm, vì vậy sử dụng điều này một cách cẩn thận. Làm trung bình của nhiều lần chạy (và kiểm tra phương sai đó là thấp, loại bỏ kết quả xa hơn mức trung bình) sẽ cho kết hợp với kết quả của bạn.
Giả sử bạn có một phương pháp phù hợp, điều này sẽ khá đơn giản. Chỉ cần bọc cả hai phương pháp trong bộ hẹn giờ và lặp lại nó nhiều lần để có ý nghĩa thống kê.
--test method with adjacency matrix
start = TimeNow()
repeat 1000 times
DepthFirstSearchWithAdjMatrix()
timePerSearch = (TimeNow() - start)/1000.0
--test method with adjacency list
start = TimeNow()
repeat 1000 times
DepthFirsySearchWithAdjList()
timePerOtherSearch = (TimeNow() - start)/1000.0
if timePerSearch < timePerOtherSearch
print "Adj Matrix is better than adj list"
else
print "Adj Matrix is worse than adj list"
@Martin: cảm ơn câu trả lời của bạn, tôi hoàn toàn hiểu. Hãy chịu với tôi vì tôi chưa bao giờ sử dụng bất cứ điều gì như thế. Bạn có biết làm thế nào TimeNow() được gọi là trong java? – Carlos
tìm thấy nó! import java.util.Date; - DateFormat dateFormat = new SimpleDateFormat ("yyyy/MM/dd HH: mm: ss") .... – Carlos
Một điều tốt hơn để sử dụng trong java là thời gian hệ thống http://java.sun.com/j2se/1.5 .0/docs/api/java/lang/System.html # currentTimeMillis% 28% 29 – Martin
- 1. Thuật ngữ "biểu mẫu chuẩn" hoặc "biểu diễn chuẩn" trong Java nghĩa là gì?
- 2. Biểu diễn mảng trong lược đồ
- 3. Lập trình chức năng - biểu tượng chuẩn, biểu đồ, v.v.
- 4. UML để biểu diễn XML
- 5. un-biểu diễn
- 6. để hiển thị biểu diễn sơ đồ mã c
- 7. Tạo sơ đồ UML từ biểu diễn văn bản
- 8. Làm cách nào để biểu diễn một hàm đệ quy với Biểu đồ luồng?
- 9. Dòng chính xác (đường chấm chấm) biểu diễn trong một biểu đồ trình tự là gì?
- 10. Làm cách nào để biểu diễn câu lệnh if trên biểu đồ trình tự trong DIA?
- 11. ElasticSearch biểu diễn mong đợi
- 12. Kiểm tra chuẩn mực ở SAS
- 13. Đường cong Gaussian chưa chuẩn hóa trên biểu đồ
- 14. Clojure biểu diễn mảng byte
- 15. biểu diễn byte trong BINARY_CHECKSUM()?
- 16. Biểu diễn chuỗi của time_t?
- 17. Biểu đồ kiểu dữ liệu biểu đồ Haskell
- 18. Biểu diễn nhị phân trong C
- 19. Câu hỏi REST: PUT một biểu diễn, NHẬN một biểu diễn khác?
- 20. MongoDB: Làm cách nào để biểu diễn sơ đồ lược đồ trong luận án?
- 21. Biểu diễn thời gian bằng excel trên 24 giờ
- 22. Biểu diễn văn bản cho sơ đồ lớp UML - DSL cho UML
- 23. Biểu đồ/Biểu đồ Cam kết của Mercurial
- 24. biểu đồ tổ chức biểu đồ tam giác
- 25. sao chép biểu đồ (adjacency_list) sang một biểu đồ khác
- 26. Biểu đồ đường kẻ mịn của API Google Biểu đồ
- 27. Thực hiện biểu đồ biểu đồ danh sách kề
- 28. Biểu đồ Hiển thị Biểu đồ Google Pie
- 29. Cột Biểu đồ vị trí chú thích biểu đồ Google
- 30. Thời gian biểu đồ thị của biểu đồ trong Python
jack rất đẹp, cảm ơn rất nhiều. Chúc may mắn với bài viết của bạn – Carlos
một lần nữa cảm ơn bạn thân – Carlos
Tôi chưa bao giờ nghĩ đến việc loại bỏ phương sai trong điểm chuẩn, đó có thể là một ý tưởng hay ... – Martin