- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi không thể quyết định nên sử dụng bfs hay dfs trong cả hai trường hợp
Trường hợp 1: Đồ thị là một cây có trọng số cạnh không cân bằng, không có hướng, có chiều cao 40 và độ sâu tối thiểu tới bất kỳ nút lá nào là 38. Thuật toán tốt nhất để tìm chi phí cạnh tối thiểu từ gốc đến bất kỳ lá nào
Trường hợp 2: Đồ thị là vùng heap tối đa, thuật toán nào là tốt nhất để tìm giá trị khóa tối đa ở mỗi cấp độ của vùng heap.
Đối với trường hợp 1, tôi đang xem xét DFS, vì bạn không cần phải lặp qua tất cả các nhánh để tìm nhánh nhỏ nhất có nhánh thứ hai lớn hơn nhánh bạn đã dừng lại.
Đối với trường hợp 2, tôi đang xem xét BFS vì BFS lấy tất cả các nút từ mỗi cấp cùng một lúc và tốt hơn để so sánh..
Có gợi ý gì không?
câu trả lời hay nhất
Tôi giả sử trong cả hai trường hợp, bạn chỉ có một con trỏ tới gốc của cây/đống.
Bất kể sử dụng BFS hay DFS, độ phức tạp về thời gian trong trường hợp xấu nhất trong cả hai trường hợp là TRÊN)
,TRONG n
là số lượng nút. Vì vậy, bất kỳ ý tưởng nào bạn có thể nghĩ ratối ưu hóaTất cả sẽ là tối ưu hóa "trung bình".
Vì những lý do chính xác mà bạn đưa ra, bạn đúng rằng DFS có thể sẽ hoạt động tốt hơn BFS cho trường hợp 1.
Tuy nhiên, đối với trường hợp 2, DFS không chậm hơn BFS (ít nhất là về mặt lý thuyết) vì bạn có thể chỉ cần lưu trữ từng nút ở cấp độ tương ứng của nó và sau đó họ so sánh tất cả các nút ở mỗi cấp độ. Tuy nhiên, đối với độ phức tạp về không gian, BFS sẽ tốt hơn vì khi bạn hoàn thành một cấp độ và chuyển sang cấp độ tiếp theo, bạn không phải lưu trữ bất kỳ nút gốc nào. Vì lý do này, BFS có thể được khuyến nghị cho trường hợp 2.
Về thuật toán - BFS và DFS trong những trường hợp này? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/42980871/
Tôi mới làm quen với Java và đây là mã của tôi, if( a.name == b.name && a.displayname == b.displayname && a.linknam
Trong kịch bản bên dưới, tôi có giá trị bool. Dựa trên kết quả, tôi gọi hàm giống hệt nhau, điểm khác biệt duy nhất là số lượng tham số. var myBoolean = ... if (myBoolean) { lấy
Tôi là nhà phát triển C đang làm việc trên C++: Tôi có hiểu chính xác rằng nếu tôi ném một ngoại lệ thì ngăn xếp sẽ thư giãn cho đến khi tìm thấy trình xử lý ngoại lệ đầu tiên không? Có thể mở trình gỡ lỗi trong bất kỳ lần ném nào mà không cần gỡ bỏ (tức là không rời khỏi phạm vi được khai báo hoặc bất kỳ phạm vi nào cao hơn không?
Trong khi sửa một lỗi trong một cơ sở mã khổng lồ, tôi đã quan sát thấy một tình huống kỳ lạ trong đó loại tham chiếu động đã bị thay đổi từ loại Có nguồn gốc thành loại Cơ sở. Tôi đã cung cấp mã tối thiểu để giải thích vấn đề: struct Base { // some
Tôi đang cố gắng mở rộng một mã nhất định trong C# nhưng tôi hơi khó khăn do thiếu kinh nghiệm lập trình. Sử dụng Cộng đồng Visual Studio, tôi đã thử đọc nhiệt độ lõi CPU thông qua bảng điều khiển. Mã sử dụng công tắc/vỏ để tìm tên cụ thể của cảm biến (tức là.
Đây có thể là một câu hỏi triết học. Giả sử bạn đang thực hiện một yêu cầu AJAX tới trang (đây là sử dụng Prototype): new Ajax.Request('target.asp', { Method:"post", pa
Tôi có mã HTML sau nhưng không hoạt động được trên tất cả các trình duyệt: Tôi đang cố chuyển nó sang
Tôi rất mới với Swift. Làm cách nào tôi có thể truy xuất nhận xét từ hàm addPin và có thể sử dụng nhận xét đó trong hành động addLocation của mình (buttonPressed). Tôi đang cố gắng sử dụng cảm ứng áp lực để thêm ghim trên bản đồ, giữa hai
Tôi đã thiết lập Chế độ xem chi tiết trong đó tôi tải một số tệp Nib dựa trên mục được chọn trong bảng của Trình điều khiển chế độ xem gốc. Tôi thấy rằng đối với các lớp của Nibs, viewDidUnloa không bao giờ được gọi
Tôi cần truy cập tệp json một cách linh hoạt và sử dụng đoạn mã sau. Trong ví dụ này, "bpicsel" và "temp" là các biến. Kết quả cuối cùng trông giống như "data[0].extit1" var title="data["+bpicsel+"]
Tôi cần sử dụng dịch vụ WCF của bên thứ ba. Tôi đã định cấu hình các chứng chỉ cần thiết trong kho chứng chỉ của mình nhưng tôi gặp phải ngoại lệ sau khi gọi dịch vụ WCF. Tới https://XXXX.com/AHSharedServices/Custome
Trong một số câu trả lời SO (1, 2), người ta đề xuất rằng không nên kích hoạt trình kích hoạt INSERT nếu có xung đột, TRÊN XUNG ĐỘT KHÔNG LÀM GÌ trong câu lệnh kích hoạt. Có thể tôi hiểu sai, nhưng điều đó dường như không đúng trong các thí nghiệm của tôi. Đây là S của tôi
Nếu được sửa đổi, nó sẽ mang lại ngoại lệ org.hibernate.NonUniqueObjectException. Trong lớp BidderBO của tôi @Override @Transactional(pr
Tôi sử dụng phương thức indexOf() để tìm các đối tượng trong một mảng một cách tinh vi. Cho đến bây giờ tôi đã kiểm tra một số thông tin và thấy rằng mã không hoạt động bình thường. Tôi đã thử đoạn mã trên trong bộ giảm tốc và nó đã hoạt động let tmp = state.find
Giả sử tôi có bảng sau: TẠO BẢNG trò chơi ( GameID INT UNSIGNED NOT NULL, GameType TINYINT UNSIGNED NOT NU
Mã: Alamofire.request(URL(string: imageUrl)!).downloadProgress(closure: { (progress) in
Tôi là một lập trình viên xuất sắc, rất giỏi!