I think the best way to explain is by an example. Imagine I have a big set of houses to sell and I want to present then in a site. The user should be able to filter the house he want by price, city, number of floor, area etc. I don’t want it to be like this:
first select price only then you can select city, only after that the number of floors etc.
I want the user to be able to pick the order of attributes he wants.
For each iteration (attribute selection) the set of remaining attributes will have a limited range of selection based on the previous interaction and so on.
I saw this being available on some sale sites but I don’t know this is implemented, specially regarding the data structure. Looks like not trivial to insert new houses for example etc. Looks like a complicated combination of binary trees and linked lists but there is probably a better way that I don’t figured out.