2017-10-30 28 views
6

Tôi đã tìm thấy sự cố sau đây trong một trong các cuộc phỏng vấn. Xin vui lòng đề nghị tôi thuật toán cho việc này. Tôi không cần mã.Thuật toán Bartender lười biếng

  • N số đồ uống có thể. (N1, n2 ..)
  • C số lượng khách hàng cố định.
  • Mọi khách hàng đều đã cố định bộ đồ uống yêu thích.
  • Bartender có để tạo ra số lượng ít nhất có thể các loại đồ uống để đủ cần của tất cả các khách hàng

Ví dụ:

Cust1: n3,n7,n5,n2,n9 
Cust2: n5 
Cust3: n2,n3 
Cust4: n4 
Cust5: n3,n4,n3,n5,n7,n4  

Output: 3(n3,n4,n5) 
+0

Ví dụ này không đáng kể để giải quyết và không đại diện cho trường hợp chung. Vì vậy, những gì cần được giải quyết? Ví dụ hoặc chung? –

+2

Trông giống như [vấn đề hôn nhân ổn định] (https://en.wikipedia.org/wiki/Stable_marriage_problem). Bạn đã kiểm tra bất cứ điều gì về [phù hợp] (https://en.wikipedia.org/wiki/Matching_ (graph_theory)) vấn đề và lý thuyết đồ thị? Một vài điều cũng được đề cập ở đây: [Tôi đang cố gắng tìm một “thuật toán bartender”] (https://stackoverflow.com/questions/17068783/im-trying-to-find-a-bartender-algorithm) – tgogos

+0

Cảm ơn Yves. Trên thực tế, tôi không hiểu làm thế nào đầu ra trong ví dụ này là đạt được. Nó sẽ có lợi nếu đầu ra có thể được giải thích. – ash164

Trả lời

7

Hãy tái cấu trúc vấn đề này. Chúng tôi có biểu đồ hai bên G(Drinks, Customers, E). Trường hợp cạnh e(i, j) là trong E khi uống i là trong bộ yêu thích của khách hàng j. Và chúng tôi muốn tìm tập hợp con số ít nhất là Drinks để bao gồm tất cả Customers được đặt.

Sự cố này là biến thể của Set cover problem (xem Hitting set formulation). Nó được biết là NP-hard, vì vậy không có thuật toán đa thức đã biết.

Tùy thuộc vào các ràng buộc của vấn đề cụ thể, nó có thể được giải quyết bằng thuật toán brute-force đơn giản hoặc phương pháp lập trình/ghi nhớ động, nhưng bạn nên biết các ràng buộc chính xác sau đó.

+0

Đúng, nhưng ở đây chúng tôi có thêm thông tin về biểu đồ (về cơ bản là có hai nhóm nút và bạn chỉ có thể được liên kết với nút trong nhóm khác), vì vậy có thể đây là trường hợp đơn giản hơn, có thể giải quyết được đa thức? – gdelab

+0

@gdelab, thật không may, phiên bản đồ thị bipartite https://en.wikipedia.org/wiki/Set_cover_problem#Hitting_set_formulation cũng là 'NP-hard'. – DAle

+1

Vâng, tôi đã đi đến kết luận này ... – gdelab

Các vấn đề liên quan