Sorting has a natural generalization where the input consists of: (1) a ground set of size , (2) a partial oracle specifying some fixed partial order on and (3) a linear oracle specifying a linear order that extends . The goal is to recover the linear order on using the fewest number of linear oracle queries. In this problem, we measure algorithmic complexity through three metrics: oracle queries to , oracle queries to , and the time spent. Any algorithm requires worst-case linear oracle queries to recover the linear order on . Kahn and Saks presented the first algorithm that uses linear oracle queries (using partial oracle queries and exponential time). The state-of-the-art for the general problem is by Cardinal, Fiorini, Joret, Jungers and Munro who at STOC’10 manage to separate the linear and partial oracle queries into a preprocessing and query phase. They can preprocess using partial oracle queries and time. Then, given , they uncover the linear order on in linear oracle queries and time – which is worst-case optimal in the number of linear oracle queries but not in the time spent. For , our algorithm can preprocess using queries and time. Given , we uncover using queries and time. We show a matching lower bound, as there exist positive constants where for any constant , any algorithm that uses at most preprocessing must use worst-case at least linear oracle queries. Thus, we solve the problem of sorting under partial information through an algorithm that is asymptotically tight across all three metrics.

生成讲解博客的中文版本

生成AI智能校验的中文版本