308 research outputs found
Automated Verification of Practical Garbage Collectors
Garbage collectors are notoriously hard to verify, due to their low-level
interaction with the underlying system and the general difficulty in reasoning
about reachability in graphs. Several papers have presented verified
collectors, but either the proofs were hand-written or the collectors were too
simplistic to use on practical applications. In this work, we present two
mechanically verified garbage collectors, both practical enough to use for
real-world C# benchmarks. The collectors and their associated allocators
consist of x86 assembly language instructions and macro instructions, annotated
with preconditions, postconditions, invariants, and assertions. We used the
Boogie verification generator and the Z3 automated theorem prover to verify
this assembly language code mechanically. We provide measurements comparing the
performance of the verified collector with that of the standard Bartok
collectors on off-the-shelf C# benchmarks, demonstrating their competitiveness
The Teleportation Design Pattern for Hardware Transactional Memory
We identify a design pattern for concurrent data structures, called teleportation, that uses best- effort hardware transactional memory to speed up certain kinds of legacy concurrent data struc- tures. Teleportation unifies and explains several existing data structure designs, and it serves as the basis for novel approaches to reducing the memory traffic associated with fine-grained locking, and with hazard pointer management for memory reclamation
A 0.821-ratio purely combinatorial algorithm for maximum k-vertex cover in bipartite graphs
We study the polynomial time approximation of the max k-vertex cover problem in bipartite graphs and propose a purely combinatorial algorithm that beats the only such known algorithm, namely the greedy approach. We present a computer-assisted analysis of our algorithm, establishing that the worst case approximation guarantee is bounded below by 0.821. © Springer-Verlag Berlin Heidelberg 2016
Brief Announcement: Concurrent Aggregate Queries
Concurrent data structures serve as fundamental building blocks for concurrent computing. Many concurrent counterparts have been designed for basic sequential algorithms; however, one notable omission is a concurrent tree that supports aggregate queries. Aggregate queries essentially compile succinct information about a range of data items. Such queries play an essential role in various applications and are commonly taught in undergraduate data structures courses. In this paper, we formalize a type of aggregate queries that can be efficiently supported by concurrent trees and present a design for implementing these queries on concurrent lock-based trees. We present two algorithms implementing this design, where one optimizes for tree update time, while the other optimizes for aggregate query time
The ERA Theorem for Safe Memory Reclamation
Safe memory reclamation (SMR) schemes for concurrent data structures offer
trade-offs between three desirable properties: ease of integration, robustness,
and applicability. In this paper we rigorously define SMR and these three
properties, and we present the ERA theorem, asserting that any SMR scheme can
only provide at most two of the three properties
Concurrent aggregate queries
Concurrent data structures serve as fundamental building blocks for
concurrent computing. Many concurrent counterparts have been designed for basic
sequential mechanisms; however, one notable omission is a concurrent tree that
supports aggregate queries. Aggregate queries essentially compile succinct
information about a range of data items, for example, calculating the average
salary of employees in their 30s. Such queries play an essential role in
various applications and are commonly taught in undergraduate data structures
courses. In this paper, we formalize a type of aggregate queries that can be
efficiently supported by concurrent trees and present a design for implementing
these queries on concurrent trees. We bring two algorithms implementing this
design, where one optimizes for tree update time, while the other optimizes for
aggregate query time. We analyze their correctness and complexity,
demonstrating the trade-offs between query time and update time
The complexity of the Pk partition problem and related problems in bipartite graphs
International audienceIn this paper, we continue the investigation made in [MT05] about the approximability of Pk partition problems, but focusing here on their complexity. Precisely, we aim at designing the frontier between polynomial and NP-complete versions of the Pk partition problem in bipartite graphs, according to both the constant k and the maximum degree of the input graph. We actually extend the obtained results to more general classes of problems, namely, the minimum k-path partition problem and the maximum Pk packing problem. Moreover, we propose some simple approximation algorithms for those problems
- …
