2,456 research outputs found
Solving Functional Constraints by Variable Substitution
Functional constraints and bi-functional constraints are an important
constraint class in Constraint Programming (CP) systems, in particular for
Constraint Logic Programming (CLP) systems. CP systems with finite domain
constraints usually employ CSP-based solvers which use local consistency, for
example, arc consistency. We introduce a new approach which is based instead on
variable substitution. We obtain efficient algorithms for reducing systems
involving functional and bi-functional constraints together with other
non-functional constraints. It also solves globally any CSP where there exists
a variable such that any other variable is reachable from it through a sequence
of functional constraints. Our experiments on random problems show that
variable elimination can significantly improve the efficiency of solving
problems with functional constraints
Learning Robust Search Strategies Using a Bandit-Based Approach
Effective solving of constraint problems often requires choosing good or
specific search heuristics. However, choosing or designing a good search
heuristic is non-trivial and is often a manual process. In this paper, rather
than manually choosing/designing search heuristics, we propose the use of
bandit-based learning techniques to automatically select search heuristics. Our
approach is online where the solver learns and selects from a set of heuristics
during search. The goal is to obtain automatic search heuristics which give
robust performance. Preliminary experiments show that our adaptive technique is
more robust than the original search heuristics. It can also outperform the
original heuristics.Comment: Published at the Proceedings of 32th AAAI Conference on Artificial
Intelligence (AAAI'18
Stochastic Database Cracking: Towards Robust Adaptive Indexing in Main-Memory Column-Stores
Modern business applications and scientific databases call for inherently
dynamic data storage environments. Such environments are characterized by two
challenging features: (a) they have little idle system time to devote on
physical design; and (b) there is little, if any, a priori workload knowledge,
while the query and data workload keeps changing dynamically. In such
environments, traditional approaches to index building and maintenance cannot
apply. Database cracking has been proposed as a solution that allows on-the-fly
physical data reorganization, as a collateral effect of query processing.
Cracking aims to continuously and automatically adapt indexes to the workload
at hand, without human intervention. Indexes are built incrementally,
adaptively, and on demand. Nevertheless, as we show, existing adaptive indexing
methods fail to deliver workload-robustness; they perform much better with
random workloads than with others. This frailty derives from the inelasticity
with which these approaches interpret each query as a hint on how data should
be stored. Current cracking schemes blindly reorganize the data within each
query's range, even if that results into successive expensive operations with
minimal indexing benefit. In this paper, we introduce stochastic cracking, a
significantly more resilient approach to adaptive indexing. Stochastic cracking
also uses each query as a hint on how to reorganize data, but not blindly so;
it gains resilience and avoids performance bottlenecks by deliberately applying
certain arbitrary choices in its decision-making. Thereby, we bring adaptive
indexing forward to a mature formulation that confers the workload-robustness
previous approaches lacked. Our extensive experimental study verifies that
stochastic cracking maintains the desired properties of original database
cracking while at the same time it performs well with diverse realistic
workloads.Comment: VLDB201
Engineering Dehydrated Amino Acid Residues in the Antimicrobial Peptide Nisin
The small antimicrobial peptide nisin, produced by Lactococcus lactis, contains the uncommon amino acid residues dehydroalanine and dehydrobutyrine and five thio ether bridges. Since these structures are posttranslationally formed from Ser, Thr, and Cys residues, it is feasible to study their role in nisin function and biosynthesis by protein engineering. Here we report the development of an expression system for mutated nisin Z (nisZ) genes, using nisin A producing L. lactis as a host. Replacement by site-directed mutagenesis of the Ser-5 codon in nisZ by a Thr codon, led to a mutant with a dehydrobutyrine instead of a dehydroalanine residue at position 5, as shown by NMR. Its antimicrobial activity was 2-10-fold lower relative to wild-type nisin Z, depending on the indicator strain used. In another mutagenesis study a double mutation was introduced in the nisZ gene by replacing the codons for Met-17 and Gly-18 by codons for Gln and Thr, respectively, as in the third lanthionine ring of the related antimicrobial peptide subtilin from Bacillus subtilis. This resulted in the simultaneous production of two mutant species, one containing a Thr residue and the other containing a dehydrobutyrine residue at position 18, both having different bacteriocidal properties.
Maintaining Arc Consistency with Multiple Residues
International audienceExploiting residual supports (or residues) has proved to be one of the most cost-effective approaches for Maintaining Arc Consistency during search (MAC). While MAC based on optimal AC algorithm may have better theoretical time complexity in some cases, in practice the overhead for maintaining required data structure during search outweighs the benefit, not to mention themore complicated implementation. Implementing MAC with residues, on the other hand, is trivial. In this paper we extend previous work on residues and investigate the use of multiple residues during search. We first give a theoretical analysis of residue-based algorithms that explains their good practical performance. We then propose several heuristics on how to deal with multiple residues. Finally, our empirical study shows that with a proper and limited number of residues, many constraint checks can be saved. When the constraint check is expensive or a problem is hard, the multiple residues approach is competitive in both the number of constraint checks and cpu time
Benchmarking Symbolic Execution Using Constraint Problems -- Initial Results
Symbolic execution is a powerful technique for bug finding and program
testing. It is successful in finding bugs in real-world code. The core
reasoning techniques use constraint solving, path exploration, and search,
which are also the same techniques used in solving combinatorial problems,
e.g., finite-domain constraint satisfaction problems (CSPs). We propose CSP
instances as more challenging benchmarks to evaluate the effectiveness of the
core techniques in symbolic execution. We transform CSP benchmarks into C
programs suitable for testing the reasoning capabilities of symbolic execution
tools. From a single CSP P, we transform P depending on transformation choice
into different C programs. Preliminary testing with the KLEE, Tracer-X, and
LLBMC tools show substantial runtime differences from transformation and solver
choice. Our C benchmarks are effective in showing the limitations of existing
symbolic execution tools. The motivation for this work is we believe that
benchmarks of this form can spur the development and engineering of improved
core reasoning in symbolic execution engines
Stack Object Protection with Low Fat Pointers
Object bounds overflow errors are a common source of security vulnerabilities. In principle, bounds check instrumentation eliminates the problem, but this introduces high overheads and is further hampered by limited compatibility against un-instrumented code. On 64-bit systems, low-fat pointers are a recent scheme for implementing efficient and compatible bounds checking by transparently encoding meta information within the native pointer representation itself. However, low-fat pointers are traditionally used for heap objects only, where the allocator has sufficient control over object location necessary for the encoding. This is a problem for stack allocation, where there exist strong constraints regarding the location of stack objects that is apparently incompatible with the low-fat pointer approach. To address this problem, we present an extension of low-fat pointers to stack objects by using a collection of techniques, such as pointer mirroring and memory aliasing, thereby allowing stack objects to enjoy bounds error protection from instrumented code. Our extension is compatible with common special uses of the stack, such as alloca, setjmp and longjmp, exceptions, and multi-threading, which rely on direct manipulation of the stack pointer. Our experiments show that we successfully extend the advantages of the low-fat pointer encoding to stack objects. The end result is a competitive bounds checking instrumentation for the stack and heap with low memory and runtime overheads, and high compatibility with un-instrumented legacy code
- …
