Giảm dần của DAG phân cấp ngăn chặn hình chữ nhật


7

Tôi đang tìm kiếm một thuật toán để tìm mức giảm bắc cầu của hệ thống phân cấp ngăn chặn hình chữ nhật DAG, tức là một cạnh có hướng tồn tại từ hình chữ nhật này sang hình chữ nhật khác nếu hình chữ nhật thứ nhất chứa hình thứ hai.O(|V|+|E|)

Đó là, loại bỏ càng nhiều cạnh càng tốt để nếu bạn có thể tiếp cận v từ u, đối với v và u tùy ý, bạn vẫn có thể tiếp cận nó sau khi loại bỏ các cạnh.

Giả sử rằng hình chữ nhật là duy nhất, vì vậy chúng tôi đang xử lý một DAG.


Điều này rất hữu ích, ví dụ, với khai thác quy tắc kết hợp định lượng từ Srikant / Agrawal 1996. Ở đó, chúng tôi quan tâm đến tổ tiên gần gũi cho siêu hình chữ nhật tổ tiên chứa chúng tôi. Xác định tổ tiên gần giống như xác định hậu duệ gần, có liên quan đến giảm quá độ với ngăn chặn hình chữ nhật. Kiểu khai thác quy tắc này có liên quan đến thuật toán APRIORI cho khai thác quy tắc kết hợp tiêu chuẩn (tức là "Boolean") từ Agrawal / Srikant 1994.

Một vấn đề tương tự là giảm DAG tạm thời, ở đây:
Giảm DAG bắc cầu

Người giới thiệu

  • Agrawal, Srikant - Thuật toán nhanh cho quy tắc kết hợp khai thác (1994)
  • Srikant, Agrawal - Khai thác các quy tắc kết hợp định lượng trong các bảng quan hệ lớn (1996)

Hình chữ nhật có thể chồng lên nhau mà không được chứa đầy đủ trong cái kia không? Nếu không, tôi nghĩ rằng điều này sẽ đơn giản hóa vấn đề.
j_random_hacker

Có, có thể không có chồng chéo.
bzliu94

Dựa trên cuộc thảo luận tại câu hỏi này, dường như không ai biết cách giảm dần DAG chung trong thời gian phức tạp này, vì vậy câu hỏi đầu tiên là liệu mỗi DAG có phải là DAG chứa hình chữ nhật cho một số hình chữ nhật không: nếu câu trả lời là vâng, về cơ bản bạn đang bị mắc kẹt. Nếu câu trả lời là không, bạn sẽ cần khám phá một số cấu hình của các cạnh không thể xảy ra trong DAG chứa hình chữ nhật và khai thác chúng bằng cách nào đó.
j_random_hacker

Câu trả lời:


5

Ngày 14 tháng 12 năm 2018

Phương pháp tiêu chuẩn và thay thế heuristic

Cách tiếp cận tiêu chuẩn - sử dụng đồ thị và khoảng cách sản phẩm

Chúng tôi lưu ý rằng giảm chuyển tiếp có thể giảm xuống đóng cửa bắc cầu và ngược lại cả hai trong thời gian bổ sung trong . Sau đó, chúng ta biết rằng nếu chúng ta có thể giải quyết đóng cửa thời gian , thì chúng ta cũng có thể giải quyết phép nhân ma trận Boolean (MM) lỏng lẻo trong thời gian tương tự bằng cách giảm nó thành chuyển tiếp đóng (hoặc giảm quá độ), theo Fischer / Meyer 1971. Lax Boolean MM là nơi các giá trị đầu vào nằm trong và chúng tôi có bán vòng củaO(n2)O(n2polylog(n)){0,1}(OR,AND). Chúng ta có thể giải quyết MM Boolean lỏng lẻo bằng cách giảm xuống MM tiêu chuẩn (cộng, lần). Điều này có nghĩa là phương pháp thời gian cận lâm sàng đáng kể hiện không có khả năng giảm quá độ. Chúng ta có thể giảm mức giảm chuyển tiếp DAG dựa trên nút thành giảm chuyển tiếp DAG dựa trên hình chữ nhật thông qua thứ tự tôpô và hình dạng có kích thước liên quan nghịch với khoảng cách từ nguồn. Đối với ứng dụng hình chữ nhật, tất nhiên chúng ta không nên có chu kỳ, điều này xảy ra khi hình chữ nhật giống hệt nhau, trong trường hợp đó chúng ta nên loại bỏ trùng lặp. Một thuật toán trực tiếp hơn là để tính toán giảm giả sử đồ thị thưa thớt, mất thời gian . Những lần này cũng bỏ qua rằng để đưa ra DAG ban đầu, chúng tôi phải thực hiện bài kiểm tra ngăn chặn, mỗi bài kiểm tra cần có thời gianO(n3)n2O(d)=O(2)=O(1) .

Thay thế heuristic - sử dụng cây R

Ngoài ra, giả sử chúng ta có kích thước thấp vừa phải và cố định và không bị ràng buộc chặt chẽ bởi , chúng ta có thể đến những thời điểm có vẻ như là subcubic trong . Chúng tôi có hai tùy chọn - cả hai đều sử dụng biến thể cây R với tải hàng loạt, ví dụ như thông qua phương pháp đệ quy sắp xếp (STR) qua Leutenegger 1997 và được cân bằng và đó là động thông qua việc xây dựng lại thỉnh thoảng giống như cây bkd (xem Procopiuc 2003) để hỗ trợ chèn và xóa trong thời gian . Xem Guttman 1984 để biết chi tiết về cây R tiêu chuẩn. Ý tưởng chính là chúng ta tìm thấy hậu duệ gần gũi cho mỗi hình chữ nhật được cung cấp thông qua tổng sốdO(n)nO(log2(n))nntruy vấn con cháu gần gũi. Chúng tôi xem xét cả hai lựa chọn liên quan đến heuristic vì chúng tôi có thể có nhiều linh cảm trung gian cho con cháu gần cuối cùng không tồn tại, mặc dù các truy vấn con có thời gian được đảm bảo tốt cho tùy chọn thứ nhất.

Nếu chúng ta có các hình chữ nhật cặp đôi không thường xuyên liên quan đến bao vây / ngăn chặn và chồng chéo có mối tương quan cao với bao vây / ngăn chặn, thì có thể hình dung rằng chúng ta có thể có hiệu suất tốt hơn bằng cách sử dụng cây R thông qua một trong hai tùy chọn cho phương pháp của mình. Chúng tôi lưu ý rằng một truy vấn bao vây hình chữ nhật yêu cầu cho một hình chữ nhật hình chữ nhật truy vấn có chứa nó và một truy vấn ngăn hình chữ nhật yêu cầu cho một hình chữ nhật hình chữ nhật truy vấn phù hợp với nó. Truy vấn con cháu gần như hoạt động thông qua một cách tiếp cận heuristic. Chúng tôi tìm thấy các hình chữ nhật nguyên thủy được chứa bởi hình chữ nhật truy vấn và sử dụng các truy vấn phụ để xem hình chữ nhật được trả về có cha mẹ được chứa bởi hình chữ nhật truy vấn ban đầu không. Ứng cử viên con cháu thân thiết chúng tôi lưu trữ trong một "cuộc xung đột" Cây R thứ cấp với mục đích tăng tốc kiểm tra dưới dạng truy vấn bao vây với việc dừng sớm để xác định xem cha mẹ ứng cử viên có bao vây (và không đủ tiêu chuẩn) một hậu duệ gần gũi của ứng cử viên hay không; chúng tôi duy trì cây xung đột này thông qua chèn và xóa. Chúng tôi lưu ý rằng khi chúng tôi gặp hình chữ nhật có cùng hình dạng, chúng tôi có thể chọn giữ một trong số chúng một cách tùy ý. Chúng tôi sử dụng hàng đợi ưu tiên đầu tiên tốt nhất để hướng dẫn thứ tự xem xét hộp giới hạn; chúng tôi thích chứa các hộp giới hạn và chúng tôi buộc lại bằng cách thích diện tích hộp giới hạn lớn hơn (bởi vì khó hơn là một người trung gian cho một hộp chứa lớn hơn). chúng ta có thể chọn giữ một trong số chúng một cách tùy tiện. Chúng tôi sử dụng hàng đợi ưu tiên đầu tiên tốt nhất để hướng dẫn thứ tự xem xét hộp giới hạn; chúng tôi thích chứa các hộp giới hạn và chúng tôi buộc lại bằng cách thích diện tích hộp giới hạn lớn hơn (bởi vì khó hơn là một người trung gian cho một hộp chứa lớn hơn). chúng ta có thể chọn giữ một trong số chúng một cách tùy tiện. Chúng tôi sử dụng hàng đợi ưu tiên đầu tiên tốt nhất để hướng dẫn thứ tự xem xét hộp giới hạn; chúng tôi thích chứa các hộp giới hạn và chúng tôi buộc lại bằng cách thích diện tích hộp giới hạn lớn hơn (bởi vì khó hơn là một người trung gian cho một hộp chứa lớn hơn).

Tùy chọn # 1 - sử dụng nhìn về phía trước

Tùy chọn đầu tiên là sử dụng nhìn về phía trước cho các truy vấn con như bao vây hình chữ nhật và ngăn hình chữ nhật kết hợp với chuyển đổi góc. Truy vấn cận cảnh sau đó sẽ không trực tiếp sử dụng nhìn về phía trước; truy vấn con của nó làm. Sau đó, chúng tôi có hệ số cho các truy vấn nhìn về phía trước để kiểm tra cạnh. Chúng tôi sẽ không đi sâu vào chi tiết về việc nhìn về phía trước ngoại trừ việc nó yêu cầu các hộp giới hạn gần như tách rời cho anh chị em (mặc dù được phép chia sẻ cạnh) và điều đó có liên quan đến việc biết rằng một trong hai đứa trẻ chắc chắn có một trận đấu (đó là thực hiện đơn giản hơn để nhận thấy rằng chúng tôi cũng sử dụng chuyển đổi góc) thông qua kiểm tra cạnh tại mỗi nút. Cần lưu ý rằng không có bao vây phía trước và ngăn chặn đã mất ít nhấtdddthời gian cho mỗi nút cho một cây R. Chúng tôi sửa đổi truy vấn phụ để sử dụng dừng sớm, điều này dẫn đến thời gian cho một truy vấn như vậy là thay vì . Thời gian cho mỗi truy vấn con cháu gần bằng , trong đó là số linh cảm con cháu gần gũi st nằm trong . Điều này có nghĩa là đối với truy vấn gần đúng, chúng ta sẽ mất nhiều thời gian trong = . Vì giá trị này nhỏ hơn khối trong (mặc dù chúng tôi bỏ qua hệ sốO(log(n))O(log2(n))O(klog2(n))kkO(n)nO(knlog2(n))O(n2log2(n))ndgiả sử nó ở mức thấp vừa phải và cố định), phương pháp này có thể được sử dụng để có hiệu suất tốt hơn trong thực tế. Chúng tôi đã bỏ qua chi tiết rằng đối với các truy vấn con bao vây / ngăn chặn sử dụng trước, chúng tôi có thể mất thời gian không đổi ngay cả khi không có kết quả khớp nào.

Tùy chọn # 2 - không sử dụng nhìn về phía trước

Tùy chọn thứ hai là không sử dụng nhìn về phía trước và tất cả những gì chúng ta có thể nói (không cần đơn giản hóa thêm các giả định) là với mỗi truy vấn con cháu gần gũi, chúng ta có trường hợp xấu nhất là linh cảm, mỗi trường hợp sau đó sẽ lấy thời gian để tìm (vì chúng tôi không đi xuống chi nhánh nhiều lần). Chúng tôi lưu ý rằng chúng tôi giả định rằng chúng tôi không sử dụng chuyển đổi góc. Kết quả là, chúng ta có một thời gian cực kỳ lỏng lẻo và bi quan bị ràng buộc bởi để cố gắng loại bỏ một hậu duệ thân cận thông qua việc truy vấn bao vây với việc dừng sớm. Thời gian cho một truy vấn hậu duệ gần được giới hạn bởi , trong đó là số trường hợp xấu nhất của linh cảm (tức là ). Thời gian chonO(log(n))O(nlog(n))O(knlog(n))knnCác truy vấn gần như sau đó được giới hạn bởi = . Con số này nhiều hơn khối trong (một lần nữa lưu ý rằng chúng ta bỏ qua yếu tố vì nó ở mức thấp và cố định), nhưng thời gian cho cách tiếp cận này rất bi quan và chúng tôi tin rằng vẫn có khả năng nó có thể hoạt động tốt trong thực hành wrt brute-force. Chúng tôi cho thấy rằng điều này là hợp lý bởi bây giờ đưa ra một vài giả định, mà chúng ta sẽ thảo luận dưới đây. Mặc dù tùy chọn đầu tiên không tận dụng khả năng số lượng linh cảm có thể thấp hơn đáng kể so vớiO(kn2log(n))O(n3log(n))ndn hoặc, nó có giới hạn lý thuyết thấp hơn bởi vì họ tận dụng khả năng rằng việc truy vấn bao vây với việc dừng sớm để loại bỏ một hậu duệ thân cận có thể được đảm bảo là nhanh chóng.

Tùy chọn # 2 - ba giả định

Giả định "không trùng lặp" nói rằng (i) các hộp giới hạn không trùng với hình chữ nhật truy vấn trừ khi chúng tôi đặt hình chữ nhật truy vấn cho truy vấn bao vây hoặc chúng tôi được chứa bởi hình chữ nhật truy vấn cho truy vấn ngăn chặn; và (ii) các hộp giới hạn cho anh chị em không có anh chị em nào được chứa trong nhau không trùng nhau ngoại trừ tại một ranh giới. Chúng tôi lưu ý rằng phần một của giả định đó hầu như chỉ có thể đúng, vì bộ sưu tập hình chữ nhật thực có hình chữ nhật lớn nhất không thể bao quanh và hình chữ nhật nhỏ nhất không thể chứa. Chúng tôi giới thiệu , mô tả tỷ lệ trung bình dương tính so với thực tế dương tính trung bình để tin rằng một đứa trẻ cho một nút được liên kết với một trận đấu được bảo đảm trong khi không đủ điều kiện truy vấn con trongbb[0,1]. Thời gian cho truy vấn con cháu tùy chọn thứ hai được chia thành hai phần. Phần đầu tiên mô tả việc có được linh cảm. Phần thứ hai mô tả các nỗ lực để loại bỏ từng linh cảm. Phần thứ ba là xử lý các cập nhật cho cây xung đột. Giả sử số linh cảm là . Thời gian cho phần đầu tiên là . Thời gian cho phần thứ hai là . Thời gian cho phần thứ ba là . Tổng thời gian lỏng lẻo (giả sử là một) trong . Thời gian cho truy vấn con cháu gần là =kO(klog(n))O(k(b+1)log(n)log(n))O(klog2(n))bO(knlog2(n))nO(kn2log2(n))O(n3log2(n)) nếu ở trong . Điều này dường như không tốt hơn so với vũ phu. Nếu chúng ta đưa ra giả định "không trùng lặp", bằng 0, sẽ cho thời gian truy vấn gần đúng của = nếu nằm trong . Hệ số của (thay vìkO(n)bnO(knlog2(n))O(n2log2(n))kO(n)log2(n)log(n)) xuất phát từ chèn / xóa đối với cây xung đột của con cháu gần gù. Giả định này có thể đúng với các hình chữ nhật cho một hệ thống phân cấp có tính gắn kết cao - tức là một mối quan hệ có nhiều mối quan hệ bao vây / ngăn chặn và tách biệt tốt giữa các hình chữ nhật không liên quan thông qua bao vây / ngăn chặn.

Chúng tôi có hai giả định khác - "độ thưa đồng đều" và "không cắt tỉa", mỗi cái đều có mục đích thứ yếu liên quan đến ứng dụng khai thác quy tắc kết hợp định lượng của chúng tôi. Chúng cho phép chúng tôi điều chỉnh để giảm bớt công việc một cách quyết liệt khi tùy chọn thứ hai cho truy vấn con cháu gần có thể rất tốn thời gian. Cụ thể, giả sử số phân vùng trung bình cho một thuộc tính định lượng (coi thuộc tính phân loại là có thể có nhiều thuộc tính định lượng hai phân vùng) là ; sau đó, số vùng rắn được xem xét cho mỗi thuộc tính định lượng là - tất cả đều tồn tại nếu chúng ta có giả định "không cắt tỉa". Khi chúng ta giảm , không gian của tất cả các hình chữ nhật đa chiều có thể co lại và thông qua "độ đồng đều"pp2pn chúng ta có nhiều va chạm hơn (nghĩa là có thể có nhiều mối quan hệ hơn / chứa nhiều mối quan hệ) nhưng số lượng hình chữ nhật (được tạo thành từ sự kết hợp của các vùng rắn cho các thuộc tính khác nhau) co lại nhanh hơn - điều này có nghĩa là truy vấn gần như giảm thời gian chúng ta có thể quyết liệt thu nhỏ bằng cách giảm số lượng trung bình của phân vùng nhẹ.p

Chi tiết chia sẻ khác

Lý do duy nhất chúng tôi tin rằng người ta có thể không muốn sử dụng tùy chọn một là khó thực hiện hơn một chút. Chúng ta thường không thấy một thuật toán được đề xuất thực hiện báo cáo và mỗi thuật toán phù hợp với một hệ số theo thời gian không phải là một thuật toán. Tuy nhiên, hệ số mà chúng ta có hoặc vẫn ổn; cho thấp thường được chấp nhận ở bất cứ nơi nào chúng ta thấy , trái ngược với khi chúng ta có ví dụ nơi chúng ta thấy . Nói chung, cây R tốt hơn cây phân đoạn nhiều lớp cho các truy vấn bao vây / ngăn chặn / giao cắt hình chữ nhật hoặc truy vấn thống trị điểm nếu nhỏ hơnlog(n)log2(n)logq(n)qO(1)nO(1)dlogmax(d1,1)(n)với cho rằng đối với cây R, chúng ta không sao chép các hình chữ nhật được lưu trữ. Tùy chọn một và tùy chọn hai với các giả định ngụ ý rằng chúng ta có vẻ tốt hơn so với vũ lực cho rằng nó phù hợp để bỏ qua .d1d

Người giới thiệu

  • Pratyaksh - Giảm DAG tạm thời - Trả lời (2014)
    https://cs.stackexchange.com/q/29133
  • Wikipedia - Giảm bắc cầu - Tính toán giảm đồ thị thưa thớt
    https://en.wikipedia.org/wiki/Transitive_redraction
  • Fischer, Meyer - Phép nhân ma trận Boolean và đóng cửa bắc cầu (1971)
  • Leutenegger et al. - STR: Một thuật toán đơn giản và hiệu quả để đóng gói cây R (1997)
  • Procopiuc et al. - Bkd-tree: Một kd-tree có thể mở rộng động (2003)
  • Guttman - R-cây: Cấu trúc chỉ mục động cho tìm kiếm không gian (1984)

2
Câu trả lời ấn tượng! Tôi nhận thấy bạn đã thực hiện rất nhiều chỉnh sửa trong một thời gian ngắn trước đó trong lịch sử của câu trả lời này. Tôi chắc chắn đánh giá cao tất cả những nỗ lực của bạn để cải thiện câu trả lời và làm cho nó tốt nhất có thể. Để tham khảo trong tương lai: chúng tôi thường muốn bạn cố gắng tránh thực hiện quá nhiều chỉnh sửa trong một thời gian ngắn, vì điều đó đặt câu hỏi lên trang nhất. (còn tiếp)
DW

2
Khi bạn đến điểm mà bạn thấy bạn đã thực hiện 5-10 lần chỉnh sửa hoặc lâu hơn, có thể bạn có thể xử lý chúng để bạn chỉ thực hiện một chỉnh sửa mỗi ngày? Điều đó nói rằng, tôi không muốn khuyến khích bạn cải thiện câu trả lời, nhưng tôi biết trang web không làm cho sở thích này trở nên rõ ràng, vì vậy tôi nghĩ rằng tôi muốn chia sẻ nó với bạn.
DW
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.