16,079 research outputs found
Average-Case Complexity of Shellsort
We prove a general lower bound on the average-case complexity of Shellsort:
the average number of data-movements (and comparisons) made by a -pass
Shellsort for any incremental sequence is \Omega (pn^{1 + 1/p) for all . Using similar arguments, we analyze the average-case complexity
of several other sorting algorithms.Comment: 11 pages. Submitted to ICALP'9
Shining Light On Shadow Stacks
Control-Flow Hijacking attacks are the dominant attack vector against C/C++
programs. Control-Flow Integrity (CFI) solutions mitigate these attacks on the
forward edge,i.e., indirect calls through function pointers and virtual calls.
Protecting the backward edge is left to stack canaries, which are easily
bypassed through information leaks. Shadow Stacks are a fully precise mechanism
for protecting backwards edges, and should be deployed with CFI mitigations. We
present a comprehensive analysis of all possible shadow stack mechanisms along
three axes: performance, compatibility, and security. For performance
comparisons we use SPEC CPU2006, while security and compatibility are
qualitatively analyzed. Based on our study, we renew calls for a shadow stack
design that leverages a dedicated register, resulting in low performance
overhead, and minimal memory overhead, but sacrifices compatibility. We present
case studies of our implementation of such a design, Shadesmar, on Phoronix and
Apache to demonstrate the feasibility of dedicating a general purpose register
to a security monitor on modern architectures, and the deployability of
Shadesmar. Our comprehensive analysis, including detailed case studies for our
novel design, allows compiler designers and practitioners to select the correct
shadow stack design for different usage scenarios.Comment: To Appear in IEEE Security and Privacy 201
Fast Parallel Operations on Search Trees
Using (a,b)-trees as an example, we show how to perform a parallel split with
logarithmic latency and parallel join, bulk updates, intersection, union (or
merge), and (symmetric) set difference with logarithmic latency and with
information theoretically optimal work. We present both asymptotically optimal
solutions and simplified versions that perform well in practice - they are
several times faster than previous implementations
Partition and composition matrices
This paper introduces two matrix analogues for set partitions. A composition
matrix on a finite set X is an upper triangular matrix whose entries partition
X, and for which there are no rows or columns containing only empty sets. A
partition matrix is a composition matrix in which an order is placed on where
entries may appear relative to one-another. We show that partition matrices are
in one-to-one correspondence with inversion tables. Non-decreasing inversion
tables are shown to correspond to partition matrices with a row ordering
relation. Partition matrices which are s-diagonal are classified in terms of
inversion tables. Bidiagonal partition matrices are enumerated using the
transfer-matrix method and are equinumerous with permutations which are
sortable by two pop-stacks in parallel. We show that composition matrices on X
are in one-to-one correspondence with (2+2)-free posets on X. Also, composition
matrices whose rows satisfy a column-ordering relation are shown to be in
one-to-one correspondence with parking functions. Finally, we show that pairs
of ascent sequences and permutations are in one-to-one correspondence with
(2+2)-free posets whose elements are the cycles of a permutation, and use this
relation to give an expression for the number of (2+2)-free posets on
{1,...,n}.Comment: 14 page
2-stack pushall sortable permutations
In the 60's, Knuth introduced stack-sorting and serial compositions of
stacks. In particular, one significant question arise out of the work of Knuth:
how to decide efficiently if a given permutation is sortable with 2 stacks in
series? Whether this problem is polynomial or NP-complete is still unanswered
yet. In this article we introduce 2-stack pushall permutations which form a
subclass of 2-stack sortable permutations and show that these two classes are
closely related. Moreover, we give an optimal O(n^2) algorithm to decide if a
given permutation of size n is 2-stack pushall sortable and describe all its
sortings. This result is a step to the solve the general 2-stack sorting
problem in polynomial time.Comment: 41 page
A Visual Stack Based Paradigm for Visualization Environments
We present a new visual paradigm for Visualization Systems, inspired by stack-based programming. Most current implementations of Visualization systems are based on directional graphs. However directional graphs as a visual representation of execution, though initially quite intuitive, quickly grow cumbersome and difficult to follow under complex examples. Our system presents the user with a simple and compact methodology of visually stacking actions directly on top of data objects as a way of creating filter scripts. We explore and address extensions to the basic paradigm to allow for: multiple data input or data output objects to and from execution action modules, execution thread jumps and loops, encapsulation, and overall execution control. We exploit the dynamic nature of current computer graphic interfaces by utilizing features such as drag-and-drop, color emphasis and object animation to indicate action, looping, message/parameter passing; to furnish an overall better understanding of the resulting laid out execution scripts
- âŠ