EDBT 2026 Demo / reviewers in the wild / expert
Camil Demetrescu
dblp:d/CamilDemetrescu
· DBLP profile ↗
46ranked-venue papers
25as first author
4since 2021 · last 2022
0000-0002-4686-6745ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Theory of computation · 23 · 21 first-authorSoftware engineering, systems software and programming languages · 16 · 2 first-author · 2 since 2021Security and privacy · 3 · 2 since 2021Applied, interdisciplinary, general and emerging computing · 3 · 2 first-authorSystems, architecture and hardware · 2Databases, data management, data science and information retrieval · 2 · 1 first-authorHuman-computer interaction and ubiquitous computing · 2Artificial intelligence and machine learning · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2022 | Reach Me if You Can: On Native Vulnerability Reachability in Android Apps
Luca Borzacchiello, Emilio Coppa, Davide Maiorca, Andrea Columbu, Camil Demetrescu, Giorgio Giacinto |
ESORICS (3) | 5 |
| 2022 | SymFusion: Hybrid Instrumentation for Concolic ExecutionabstractConcolic execution is a dynamic twist of symbolic execution designed with scalability in mind. Recent concolic executors heavily rely on program instrumentation to achieve such scalability. The instrumentation code can be added at compilation time (e.g., using an LLVM pass), or directly at execution time with the help of a dynamic binary translator. The former approach results in more efficient code but requires recompilation. Unfortunately, recompiling the entire code of a program is not always feasible or practical (e.g., in presence of third-party components). On the contrary, the latter approach does not require recompilation but incurs significantly higher execution time overhead. Emilio Coppa, Heng Yin 0001, Camil Demetrescu |
ASE | 3 |
| 2021 | Fuzzing Symbolic ExpressionsabstractRecent years have witnessed a wide array of results in software testing, exploring different approaches and methodologies ranging from fuzzers to symbolic engines, with a full spectrum of instances in between such as concolic execution and hybrid fuzzing. A key ingredient of many of these tools is Satisfiability Modulo Theories (SMT) solvers, which are used to reason over symbolic expressions collected during the analysis. In this paper, we investigate whether techniques borrowed from the fuzzing domain can be applied to check whether symbolic formulas are satisfiable in the context of concolic and hybrid fuzzing engines, providing a viable alternative to classic SMT solving techniques. We devise a new approximate solver, FUZZY-SAT, and show that it is both competitive with and complementary to state-of-the-art solvers such as Z3 with respect to handling queries generated by hybrid fuzzers. Luca Borzacchiello, Emilio Coppa, Camil Demetrescu |
ICSE | 3 |
| 2021 | FUZZOLIC: Mixing fuzzing and concolic execution
Luca Borzacchiello, Emilio Coppa, Camil Demetrescu |
Comput. Secur. | 3 |
| 2019 | SymNav: Visually Assisting Symbolic ExecutionabstractModern software systems require the support of automatic program analyses to answer questions about their correctness, reliability, and safety. In recent years, symbolic execution techniques have played a pivotal role in this field, backing research in different domains such as software testing and software security. Like other powerful machine analyses, symbolic execution is often affected by efficiency and scalability issues that can be mitigated when a domain expert interacts with its working, steering the computation to achieve the desired goals faster. In this paper we explore how visual analytics techniques can help the user to grasp properties of the ongoing analysis and use such insights to refine the symbolic exploration process. To this end, we discuss two real-world usage scenarios from the malware analysis and the vulnerability detection domains, showing how our prototype system can help users make a wiser use of symbolic exploration techniques in the analysis of binary code. Marco Angelini, Graziano Blasilli, Luca Borzacchiello, Emilio Coppa, Daniele Cono D'Elia, Camil Demetrescu, Simone Lenti, Simone Nicchi, Giuseppe Santucci |
VizSEC | 6 |
| 2019 | Memory models in symbolic execution: key ideas and new thoughtsabstractSummary Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning over multiple alternative execution states at once. As the number of states to explore may grow exponentially, a symbolic executor may quickly run out of space. For instance, a memory access to a symbolic address may potentially reference the entire address space, leading to a combinatorial explosion of the possible resulting execution states. To cope with this issue, state‐of‐the‐art executors either concretize symbolic addresses that span memory intervals larger than some threshold or rely on advanced capabilities of modern satisfiability modulo theories solvers. Unfortunately, concretization may result in missing interesting execution states, for example, where a bug arises, while offloading the entire problem to constraint solvers can lead to very large query times. In this article, we first contribute to systematizing knowledge about memory models for symbolic execution, discussing how four mainstream symbolic executors deal with symbolic addresses. We then introduce MemSight, a new approach to symbolic memory that reduces the need for concretization: rather than mapping address instances to data as previous approaches do, our technique maps symbolic address expressions to data, maintaining the possible alternative states resulting from the memory referenced by a symbolic address in a compact, implicit form. Experiments on prominent programs show that MemSight, which we implemented in both Angr and Klee, enables the exploration of states that are unreachable for memory models that perform concretization and provides a performance level comparable with memory models relying on advanced solver theories. Luca Borzacchiello, Emilio Coppa, Daniele Cono D'Elia, Camil Demetrescu |
Softw. Test. Verification Reliab. | 4 |
| 2018 | On-stack replacement, distilledabstractOn-stack replacement (OSR) is essential technology for adaptive optimization, allowing changes to code actively executing in a managed runtime. The engineering aspects of OSR are well-known among VM architects, with several implementations available to date. However, OSR is yet to be explored as a general means to transfer execution between related program versions, which can pave the road to unprecedented applications that stretch beyond VMs. We aim at filling this gap with a constructive and provably correct OSR framework, allowing a class of general-purpose transformation functions to yield a special-purpose replacement. We describe and evaluate an implementation of our technique in LLVM. As a novel application of OSR, we present a feasibility study on debugging of optimized code, showing how our techniques can be used to fix variables holding incorrect values at breakpoints due to optimizations. Daniele Cono D'Elia, Camil Demetrescu |
PLDI | 2 |
| 2017 | My (fair) big dataabstractPolicy making has the strict requirement to rely on quantitative and high quality information. This paper will address the data quality issue for policy making by showing how to deal with Big Data quality in the different steps of a processing pipeline, with a focus on the integration of Big Data sources with traditional sources. In this respect, a relevant role is played by metadata and in particular by ontologies. Integration systems relying on ontologies enable indeed a formal quality evaluation of inaccuracy, inconsistency and incompleteness of integrated data. The paper will finally describe data confidentiality as a Big Data quality dimension, showing the main issues to be faced for its assurance. Tiziana Catarci, Monica Scannapieco, Marco Console, Camil Demetrescu |
IEEE BigData | 4 |
| 2017 | Rethinking pointer reasoning in symbolic executionabstractSymbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning over multiple alternative execution states at once. As the number of states to explore may grow exponentially, a symbolic executor may quickly run out of space. For instance, a memory access to a symbolic address may potentially reference the entire address space, leading to a combinatorial explosion of the possible resulting execution states. To cope with this issue, state-of-the-art executors concretize symbolic addresses that span memory intervals larger than some threshold. Unfortunately, this could result in missing interesting execution states, e.g., where a bug arises. In this paper we introduce MEMSIGHT, a new approach to symbolic memory that reduces the need for concretization, hence offering the opportunity for broader state explorations and more precise pointer reasoning. Rather than mapping address instances to data as previous tools do, our technique maps symbolic address expressions to data, maintaining the possible alternative states resulting from the memory referenced by a symbolic address in a compact, implicit form. A preliminary experimental investigation on prominent benchmarks from the DARPA Cyber Grand Challenge shows that MemSight enables the exploration of states unreachable by previous techniques. Emilio Coppa, Daniele Cono D'Elia, Camil Demetrescu |
ASE | 3 |
| 2016 | Flexible on-stack replacement in LLVMabstractOn-Stack Replacement (OSR) is a technique for dynamically transferring execution between different versions of a function at run time. OSR is typically used in virtual machines to interrupt a long-running function and recompile it at a higher optimization level, or to replace it with a different one when a speculative assumption made during its compilation no longer holds. In this paper we present a framework for OSR that introduces novel ideas and combines features of existing techniques that no previous solution provided simultaneously. New features include OSR with compensation code to adjust the program state during a transition and the ability to fire an OSR from arbitrary locations in the code. Our approach is platform-independent as the OSR machinery is entirely encoded at a compiler’s intermediate representation level. We implement and evaluate our technique in the LLVM compiler infrastructure, which is gaining popularity as Just-In-Time (JIT) compiler in virtual machines for dynamic languages such as Javascript, MATLAB, Python, and Ruby. As a case study of our approach, we show how to improve the state of the art in the optimization of the feval instruction, a performance-critical construct of the MATLAB language. Daniele Cono D'Elia, Camil Demetrescu |
CGO | 2 |
| 2016 | Mining hot calling contexts in small spaceabstractCalling context trees (CCTs) associate performance metrics with paths through a program's call graph, providing valuable information for program understanding and performance analysis. In real applications, however, CCTs might easily consist of tens of millions of nodes, making them difficult to analyze and also hurting execution times because of poor access locality. For performance analysis, accurately mining only hot calling contexts may be more useful than constructing an entire CCT with millions of uninteresting paths, because the distribution of context frequencies is typically very skewed. In this article, we show how to exploit this property to considerably reduce the CCT size, introducing a novel runtime data structure, called hot CCT (HCCT), in the spectrum of representations for interprocedural control flow. The HCCT includes only hot nodes and their ancestors in a CCT and can be constructed independently from it by using fast, space-efficient algorithms for mining frequent items in data streams. With this approach, we can distinguish between hot and cold contexts on the fly while obtaining very accurate frequency counts. We show, both theoretically and experimentally, that the HCCT achieves a similar precision as the CCT in a space that is several orders of magnitude smaller and roughly proportional to the number of hot contexts. Our approach can be effectively combined with previous context-sensitive profiling techniques, as we show for static bursting. We devise an implementation as a plug-in for the gcc compiler that incurs a slowdown competitive with the gprof call-graph profiler while collecting finer-grained profiles. Copyright © 2015 John Wiley & Sons, Ltd. Daniele Cono D'Elia, Camil Demetrescu, Irene Finocchi |
Softw. Pract. Exp. | 2 |
| 2014 | Estimating the Empirical Cost Function of Routines with Dynamic Workloads
Emilio Coppa, Camil Demetrescu, Irene Finocchi, Romolo Marotta |
CGO | 2 |
| 2014 | Reactive Imperative Programming with Dataflow ConstraintsabstractDataflow languages provide natural support for specifying constraints between objects in dynamic applications, where programs need to react efficiently to changes in their environment. In this article, we show that one-way dataflow constraints, largely explored in the context of interactive applications, can be seamlessly integrated in any imperative language and can be used as a general paradigm for writing performance-critical reactive applications that require efficient incremental computations. In our framework, programmers can define ordinary statements of the imperative host language that enforce constraints between objects stored in special memory locations designated as “reactive.” Reactive objects can be of any legal type in the host language, including primitive data types, pointers, arrays, and structures. Statements defining constraints are automatically re-executed every time their input memory locations change, letting a program behave like a spreadsheet where the values of some variables depend on the values of other variables. The constraint-solving mechanism is handled transparently by altering the semantics of elementary operations of the host language for reading and modifying objects. We provide a formal semantics and describe a concrete embodiment of our technique into C/C++, showing how to implement it efficiently in conventional platforms using off-the-shelf compilers. We discuss common coding idioms and relevant applications to reactive scenarios, including incremental computation, observer design pattern, data structure repair, and software visualization. The performance of our implementation is compared to problem-specific change propagation algorithms, as well as to language-centric approaches such as self-adjusting computation and subject/observer communication mechanisms, showing that the proposed approach is efficient in practice. Camil Demetrescu, Irene Finocchi, Andrea Ribichini |
ACM Trans. Program. Lang. Syst. | 1 |
| 2014 | Input-Sensitive ProfilingabstractIn this article we present a building block technique and a toolkit towards automatic discovery of workload-dependentperformance bottlenecks. From one or more runs of a program, our profiler automatically measures how the performance of individual routines scales as a function of the input size, yielding clues to their growth rate. The output of the profiler is, for each executed routine of the program, a set of tuples that aggregate performance costs by input size. The collected profiles can be used to produceperformance plots and derive trend functions by statistical curve fitting techniques. A key feature of our method is the ability toautomatically measure the size of the input given to a generic code fragment: to this aim, we propose an effective metric for estimating the input size of a routine and show how to compute it efficiently. We discuss several examples, showing that our approach can reveal asymptotic bottlenecks that other profilers may fail to detect and can provide useful characterizations of the workload and behavior of individual routines in the context of mainstream applications, yielding several code optimizations as well as algorithmic improvements. To prove the feasibility of our techniques, we implemented a Valgrind tool called aprof and performed an extensive experimentalevaluation on the SPEC CPU2006 benchmarks. Our experiments show that aprof delivers comparable performance to otherprominent Valgrind tools, and can generate informative plots even from single runs on typical workloads for mostalgorithmically-critical routines. Emilio Coppa, Camil Demetrescu, Irene Finocchi |
IEEE Trans. Software Eng. | 2 |
| 2013 | Ball-Larus path profiling across multiple loop iterationsabstractIdentifying the hottest paths in the control flow graph of a routine can direct optimizations to portions of the code where most resources are consumed. This powerful methodology, called path profiling, was introduced by Ball and Larus in the mid 90's [4] and has received considerable attention in the last 15 years for its practical relevance. A shortcoming of the Ball-Larus technique was the inability to profile cyclic paths, making it difficult to mine execution patterns that span multiple loop iterations. Previous results, based on rather complex algorithms, have attempted to circumvent this limitation at the price of significant performance losses even for a small number of iterations. In this paper, we present a new approach to multi-iteration path profiling, based on data structures built on top of the original Ball-Larus numbering technique. Our approach allows the profiling of all executed paths obtained as a concatenation of up to k Ball-Larus acyclic paths, where k is a user-defined parameter. We provide examples showing that this method can reveal optimization opportunities that acyclic-path profiling would miss. An extensive experimental investigation on a large variety of Java benchmarks on the Jikes RVM shows that our approach can be even faster than Ball-Larus due to fewer operations on smaller hash tables, producing compact representations of cyclic paths even for large values of k. Daniele Cono D'Elia, Camil Demetrescu |
OOPSLA | 2 |
| 2013 | Editorial
Camil Demetrescu, Magnús M. Halldórsson |
Algorithmica | 1 |
| 2013 | Preface
Camil Demetrescu, Stefano Leonardi 0001, Alberto Marchetti-Spaccamela |
Theor. Comput. Sci. | 1 |
| 2012 | k-Calling context profilingabstractCalling context trees are one of the most fundamental data structures for representing the interprocedural control flow of a program, providing valuable information for program understanding and optimization. Nodes of a calling context tree associate performance metrics to whole distinct paths in the call graph starting from the root function. However, no explicit information is provided for detecting short hot sequences of activations, which may be a better optimization target in large modular programs where groups of related functions are reused in many different parts of the code. Furthermore, calling context trees can grow prohibitively large in some scenarios. Another classical approach, called edge profiling, collects performance metrics for caller-callee pairs in the call graph, allowing it to detect hot paths of fixed length one. We study a generalization of edge and context-sensitive profiles by introducing a novel data structure called k-calling context forest (k-CCF). Nodes in a k-CCF associate performance metrics to paths of length at most k that lead to each distinct routine of the program, providing edge profiles for k=1, full context-sensitive profiles for k equal to infinity, as well as any other intermediate point in the spectrum. We study the properties of the k-CCF both theoretically and experimentally on a large suite of prominent Linux applications, showing how to construct it efficiently and discussing its relationships with the calling context tree. Our experiments show that the k-CCF can provide effective space-accuracy tradeoffs for interprocedural contextual profiling, yielding useful clues to the hot spots of a program that may be hidden in a calling context tree and using less space for small values of k, which appear to be the most interesting in practice. Giorgio Ausiello, Camil Demetrescu, Irene Finocchi, Donatella Firmani |
OOPSLA | 2 |
| 2012 | Input-sensitive profilingabstractIn this paper we present a profiling methodology and toolkit for helping developers discover hidden asymptotic inefficiencies in the code. From one or more runs of a program, our profiler automatically measures how the performance of individual routines scales as a function of the input size, yielding clues to their growth rate. The output of the profiler is, for each executed routine of the program, a set of tuples that aggregate performance costs by input size. The collected profiles can be used to produce performance plots and derive trend functions by statistical curve fitting or bounding techniques. A key feature of our method is the ability to automatically measure the size of the input given to a generic code fragment: to this aim, we propose an effective metric for estimating the input size of a routine and show how to compute it efficiently. We discuss several case studies, showing that our approach can reveal asymptotic bottlenecks that other profilers may fail to detect and characterize the workload and behavior of individual routines in the context of real applications. To prove the feasibility of our techniques, we implemented a Valgrind tool called aprof and performed an extensive experimental evaluation on the SPEC CPU2006 benchmarks. Our experiments show that aprof delivers comparable performance to other prominent Valgrind tools, and can generate informative plots even from single runs on typical workloads for most algorithmically-critical routines. Emilio Coppa, Camil Demetrescu, Irene Finocchi |
PLDI | 2 |
| 2011 | Reactive imperative programming with dataflow constraintsabstractDataflow languages provide natural support for specifying constraints between objects in dynamic applications, where programs need to react efficiently to changes of their environment. Researchers have long investigated how to take advantage of dataflow constraints by embedding them into procedural languages. Previous mixed imperative/dataflow systems, however, require syntactic extensions or libraries of ad hoc data types for binding the imperative program to the dataflow solver. In this paper we propose a novel approach that smoothly combines the two paradigms without placing undue burden on the programmer. In our framework, programmers can define ordinary statements of the imperative host language that enforce constraints between objects stored in special memory locations designated as "reactive". Differently from previous approaches, reactive objects can be of any legal type in the host language, including primitive data types, pointers, arrays, and structures. Statements defining constraints are automatically re-executed every time their input memory locations change, letting a program behave like a spreadsheet where the values of some variables depend upon the values of other variables. The constraint solving mechanism is handled transparently by altering the semantics of elementary operations of the host language for reading and modifying objects. We provide a formal semantics and describe a concrete embodiment of our technique into C/C++, showing how to implement it efficiently in conventional platforms using off-the-shelf compilers. We discuss common coding idioms and relevant applications to reactive scenarios, including incremental computation, observer design pattern, and data structure repair. The performance of our implementation is compared to ad hoc problem-specific change propagation algorithms, as well as to language-centric approaches such as self-adjusting computation and subject/observer communication mechanisms, showing that the proposed approach is efficient in practice. Camil Demetrescu, Irene Finocchi, Andrea Ribichini |
OOPSLA | 1 |
| 2011 | Mining hot calling contexts in small spaceabstractCalling context trees (CCTs) associate performance metrics with paths through a program's call graph, providing valuable information for program understanding and performance analysis. Although CCTs are typically much smaller than call trees, in real applications they might easily consist of tens of millions of distinct calling contexts: this sheer size makes them difficult to analyze and might hurt execution times due to poor access locality. For performance analysis, accurately collecting information about hot calling contexts may be more useful than constructing an entire CCT that includes millions of uninteresting paths. As we show for a variety of prominent Linux applications, the distribution of calling context frequencies is typically very skewed. In this paper we show how to exploit this property to reduce the CCT size considerably. Daniele Cono D'Elia, Camil Demetrescu, Irene Finocchi |
PLDI | 2 |
| 2010 | Adapting parallel algorithms to the W-Stream model, with applications to graph problems
Camil Demetrescu, Bruno Escoffier, Gabriel Moruz, Andrea Ribichini |
Theor. Comput. Sci. | 1 |
| 2009 | Graph Spanners in the Streaming Model: An Experimental Study
Giorgio Ausiello, Camil Demetrescu, Paolo Giulio Franciosa, Giuseppe F. Italiano, Andrea Ribichini |
Algorithmica | 2 |
| 2009 | Trading off space for passes in graph streaming problemsabstractData stream processing has recently received increasing attention as a computational paradigm for dealing with massive data sets. Surprisingly, no algorithm with both sublinear space and passes is known for natural graph problems in classical read-only streaming. Motivated by technological factors of modern storage systems, some authors have recently started to investigate the computational power of less restrictive models where writing streams is allowed. In this article, we show that the use of intermediate temporary streams is powerful enough to provide effective space-passes tradeoffs for natural graph problems. In particular, for any space restriction of s bits, we show that single-source shortest paths in directed graphs with small positive integer edge weights can be solved in O (( n log 3/2 n )/√ s ) passes. The result can be generalized to deal with multiple sources within the same bounds. This is the first known streaming algorithm for shortest paths in directed graphs. For undirected connectivity, we devise an O (( n log n )/ s ) passes algorithm. Both problems require Ω( n / s ) passes under the restrictions we consider. We also show that the model where intermediate temporary streams are allowed can be strictly more powerful than classical streaming for some problems, while maintaining all of its hardness for others. Camil Demetrescu, Irene Finocchi, Andrea Ribichini |
ACM Trans. Algorithms | 1 |
| 2008 | Mantaining Dynamic Matrices for Fully Dynamic Transitive Closure
Camil Demetrescu, Giuseppe F. Italiano |
Algorithmica | 1 |
| 2008 | Oracles for Distances Avoiding a Failed Node or LinkabstractWe consider the problem of preprocessing an edge-weighted directed graph G to answer queries that ask for the length and first hop of a shortest path from any given vertex x to any given vertex y avoiding any given vertex or edge. As a natural application, this problem models routing in networks subject to node or link failures. We describe a deterministic oracle with constant query time for this problem that uses $O(n^2\log n)$ space, where n is the number of vertices in G. The construction time for our oracle is $O(mn^{2} + n^{3}\log n)$. However, if one is willing to settle for $\Theta (n^{2.5})$ space, we can improve the preprocessing time to $O(mn^{1.5}+n^{2.5}\log n)$ while maintaining the constant query time. Our algorithms can find the shortest path avoiding a failed node or link in time proportional to the length of the path. Camil Demetrescu, Mikkel Thorup, Rezaul Alam Chowdhury, Vijaya Ramachandran |
SIAM J. Comput. | 1 |
| 2007 | Small Stretch Spanners in the Streaming Model: New Algorithms and Experiments
Giorgio Ausiello, Camil Demetrescu, Paolo Giulio Franciosa, Giuseppe F. Italiano, Andrea Ribichini |
ESA | 2 |
| 2007 | Adapting Parallel Algorithms to the W-Stream Model, with Applications to Graph Problems
Camil Demetrescu, Bruno Escoffier, Gabriel Moruz, Andrea Ribichini |
MFCS | 1 |
| 2006 | Visual editing of animated algorithms: the Leonardo Web builderabstractLeonardo Web is a collection of tools to animate algorithms. Animations can be generated with a visual editor or directly as a trace of an algorithm's execution. They can be visualized via a small Java player, available as an applet or as a standalone application; the player supports bidirectional continuous and step-by-step execution. Furthermore the system allows to export the animations in several formats, including Macromedia Flash, Microsoft PowerPoint and animated GIF.In this paper we discuss the design issues of one of the component of the visual editor of Leonardo Web, called the Builder, that can be used to design an animation from scratch as well as to refine batch-generated ones. Vincenzo Bonifaci, Camil Demetrescu, Irene Finocchi, Luigi Laura |
AVI | 2 |
| 2006 | Does Path Cleaning Help in Dynamic All-Pairs Shortest Paths?
Camil Demetrescu, Pompeo Faruolo, Giuseppe F. Italiano, Mikkel Thorup |
ESA | 1 |
| 2006 | Trading off space for passes in graph streaming problems
Camil Demetrescu, Irene Finocchi, Andrea Ribichini |
SODA | 1 |
| 2006 | Fully dynamic all pairs shortest paths with real edge weights
Camil Demetrescu, Giuseppe F. Italiano |
J. Comput. Syst. Sci. | 1 |
| 2006 | Experimental analysis of dynamic all pairs shortest path algorithmsabstractWe present the results of an extensive computational study on dynamic algorithms for all pairs shortest path problems. We describe our implementations of the recent dynamic algorithms of King [1999] and of Demetrescu and Italiano [2006], and compare them to the dynamic algorithm of Ramalingam and Reps and to static algorithms on random, real-world and hard instances. Our experimental data suggest that some of the dynamic algorithms and their algorithmic techniques can be really of practical value in many situations. Camil Demetrescu, Giuseppe F. Italiano |
ACM Trans. Algorithms | 1 |
| 2005 | Trade-offs for fully dynamic transitive closure on DAGs: breaking through the O(n2 barrierabstractWe present an algorithm for directed acyclic graphs that breaks through the O ( n 2 ) barrier on the single-operation complexity of fully dynamic transitive closure, where n is the number of edges in the graph. We can answer queries in O ( n ε ) worst-case time and perform updates in O ( n ω(1,ε,1)−ε + n 1+ε ) worst-case time, for any ε∈[0,1], where ω(1,ε,1) is the exponent of the multiplication of an n × n ε matrix by an n ε × n matrix. The current best bounds on ω(1,ε,1) imply an O ( n 0.575 ) query time and an O ( n 1.575 ) update time in the worst case. Our subquadratic algorithm is randomized, and has one-sided error. As an application of this result, we show how to solve single-source reachability in O ( n 1.575 ) time per update and constant time per query. Camil Demetrescu, Giuseppe F. Italiano |
J. ACM | 1 |
| 2004 | Experimental analysis of dynamic all pairs shortest path algorithms
Camil Demetrescu, Stefano Emiliozzi, Giuseppe F. Italiano |
SODA | 1 |
| 2004 | A new approach to dynamic all pairs shortest pathsabstractWe study novel combinatorial properties of graphs that allow us to devise a completely new approach to dynamic all pairs shortest paths problems. Our approach yields a fully dynamic algorithm for general directed graphs with non-negative real-valued edge weights that supports any sequence of operations in O ( n 2 log 3 n ) amortized time per update and unit worst-case time per distance query, where n is the number of vertices. We can also report shortest paths in optimal worst-case time. These bounds improve substantially over previous results and solve a long-standing open problem. Our algorithm is deterministic, uses simple data structures, and appears to be very fast in practice. Camil Demetrescu, Giuseppe F. Italiano |
J. ACM | 1 |
| 2004 | A Java-based system for building animated presentations over the Web
Vincenzo Bonifaci, Camil Demetrescu, Irene Finocchi, Luigi Laura |
Sci. Comput. Program. | 2 |
| 2003 | Engineering and Visualizing Algorithms
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano |
GD | 1 |
| 2003 | A new approach to dynamic all pairs shortest pathsabstractWe study novel combinatorial properties of graphs that allow us to devise a completely new approach to dynamic all pairs shortest paths problems. Our approach yields a fully dynamic algorithm for general directed graphs with non-negative real-valued edge weights that supports any sequence of operations in Õ(n2)1 amortized time per update and unit worst-case time per distance query, where n is the number of vertices. We can also report shortest paths in optimal worst-case time. These bounds improve substantially over previous results and solve a long-standing open problem. Our algorithm is deterministic and uses simple data structures. Camil Demetrescu, Giuseppe F. Italiano |
STOC | 1 |
| 2003 | Combinatorial algorithms for feedback problems in directed graphs
Camil Demetrescu, Irene Finocchi |
Inf. Process. Lett. | 1 |
| 2002 | Improved Bounds and New Trade-Offs for Dynamic All Pairs Shortest Paths
Camil Demetrescu, Giuseppe F. Italiano |
ICALP | 1 |
| 2002 | Oracles for distances avoiding a link-failure
Camil Demetrescu, Mikkel Thorup |
SODA | 1 |
| 2001 | Fully Dynamic All Pairs Shortest Paths with Real Edge WeightsabstractWe present the first fully dynamic algorithm for maintaining all pairs shortest paths in directed graphs with real-valued edge weights. Given a dynamic directed graph G such that each edge can assume at most S different real values, we show how to support updates deterministically in O(S/spl middot/n/sup 2.5/log/sup 3/n) amortized time and queries in optimal worst-case time. No previous fully dynamic algorithm was known for this problem. In the special case where edge weights can only be increased, we give a randomized algorithm with one-sided error which supports updates faster in O(S/spl middot/nlog/sup 3/n) amortized time. Camil Demetrescu, Giuseppe F. Italiano |
FOCS | 1 |
| 2000 | Fully Dynamic Transitive Closure: Breaking Through the O(n2) BarrierabstractWe introduce a general framework for casting fully dynamic transitive closure into the problem of reevaluating polynomials over matrices. With this technique, we improve the best known bounds for fully dynamic transitive closure, in particular we devise a deterministic algorithm for general directed graphs that achieves O(n/sup 2/) amortized time for updates, while preserving unit worst-case cost for queries. In case of deletions only, our algorithm performs updates faster in O(n) amortized time. Our matrix-based approach yields an algorithm for directed acyclic graphs which breaks through the O(n/sup 2/) barrier on the single-operation complexity of fully dynamic transitive closure. We can answer queries in O(n/sup /spl epsiv//) time and perform updates in O(n/sup /spl omega/(1,/spl epsiv/,1)-/spl epsiv//+n/sup 1+/spl epsiv//) time, for any /spl epsiv//spl isin/[0,1], where /spl omega/(1,/spl epsiv/,1) is the exponent of the multiplication of an n/spl times/n/sup /spl epsiv// matrix by an n/sup /spl epsiv///spl times/n matrix. The current best bounds on /spl omega/(1,/spl epsiv/,1) imply an O(n/sup 0.575/) query time and an O(n/sup 1.575/) update time. Our subquadratic algorithm is randomized, and has one-side error. Camil Demetrescu, Giuseppe F. Italiano |
FOCS | 1 |
| 2000 | What Do We Learn from Experimental Algorithmics?
Camil Demetrescu, Giuseppe F. Italiano |
MFCS | 1 |
| 1999 | Infinite Trees and the Future
Camil Demetrescu, Giuseppe Di Battista, Irene Finocchi, Giuseppe Liotta, Maurizio Patrignani, Maurizio Pizzonia |
GD | 1 |