Tôi có nhiều mảng với khoảng 100 giá trị có thể, ví dụ:tìm kiếm boolean trên một mảng
a[0] = (a, b, c, d)
a[1] = (a, e)
a[2] = (d, f, g)
Tôi muốn nhanh chóng tiện lợi trở lại đó mảng chứa (một || b) & & (d || e)
trong ví dụ này, 0 và 1
Tôi đã suy nghĩ về hoạt động bitwise ... như đại diện cho "abcd" theo "1111"; "quảng cáo" bởi "1001", v.v. Sau đó, tôi có thể giải quyết "OR" chỉ với một bit OR, và sau đó kiểm tra xem cả hai có khác không
bất kỳ ai có thể nghĩ ra giải pháp tốt hơn không? điều này không phải là rất phức tạp vì nó dường như không thể leo thang được
có bất kỳ DBMS nào có thể thực hiện điều đó nhanh chóng không? Tôi đã thử với mongodb, nhưng có vẻ như họ đã không thêm chức năng "$ và" (doc nói rằng nó trên phiên bản 1.9.1, nhưng tôi chỉ có thể tải xuống 1.9.0, và nó không ổn định anyway)
I giả sử đó là một "tìm kiếm boolean", tương tự như những gì google làm tất cả các thời gian ... vì vậy tôi đoán có một cách tốt hơn (có thể không quá nhanh, nhưng leo thang hơn) hơn
Nếu mảng của bạn sẽ chỉ có abut 100 giá trị có thể, giải pháp bitwise thực sự có vẻ khá tốt. –
Như mọi khi, trong cuộc đua tốc độ bộ nhớ, nếu bạn có thể đủ khả năng để sao chép cơ sở dữ liệu của bạn, nó trở nên tầm thường (ít nhất là khái niệm). Và bạn nói rằng bạn "chỉ" có 1 triệu mảng với tối đa 80 giá trị. Vì vậy, chỉ cần xây dựng 80 mảng, nơi đầu tiên chứa chỉ mục của mảng có chứa một, v.v ... Thành thật mà nói, tôi chỉ đoán rằng làm việc với danh sách các số nguyên này sẽ nhanh hơn lặp lại nhiều lần trên "đại diện bitwise" – Fezvez