Evaluating Sketchiness as a Visual Variable for the Depiction of Qualitative Uncertainty Abstract-We report on results of a series of user studies on the perception of four visual variables that are commonly used in the literature to depict uncertainty. To the best of our knowledge, we provide the first formal evaluation of the use of these variables to facilitate an easier reading of uncertainty in visualizations that rely on line graphical primitives. In addition to blur, dashing and grayscale, we investigate the use of 'sketchiness' as a visual variable because it conveys visual impreciseness that may be associated with data quality. Inspired by work in non-photorealistic rendering and by the features of hand-drawn lines, we generate line trajectories that resemble hand-drawn strokes of various levels of proficiency-ranging from child to adult strokes-where the amount of perturbations in the line corresponds to the level of uncertainty in the data. Our results show that sketchiness is a viable alternative for the visualization of uncertainty in lines and is as intuitive as blur; although people subjectively prefer dashing style over blur, grayscale and sketchiness. We discuss advantages and limitations of each technique and conclude with design considerations on how to deploy these visual variables to effectively depict various levels of uncertainty for line marks. Information visualization can show not only what we know about the data but also the degree of our confidence in that data. This confidence could be considered as yet another data dimension. However, information on data quality in general-if at all available-rarely comes in numerical format. Qualitative measures of uncertainty are far more common and often come as ordinal meta-data. For instance, a utility company holds a positional confidence attribute for their assets where uncertainty is mapped to five categorical values from least certain to more certain: schematic, assumed, indicative, third party survey, and internal survey [8] . Such ordinal data can be visualized using Bertin's [4] retinal variables texture, value, or size. When visualizing uncertainty, however, a number of visual variables are considered more 'intuitive' for this domain; examples include blur, sharpness of focus, and color saturation. These variables may bear direct perceptual resemblance to what the uncertainty indicates and, thus, may provide an easier reading of uncertainty [11, 31, 45] . However, to our knowledge, no formal studies are reported to back up these observations.. In this paper, we investigate sketchiness as a visual variable to depict uncertainty information in line marks such as for graphs, hierarchies and route maps. The design of these sketchy lines is inspired by the field of Non-Photorealistic Rendering (NPR) and by our own observations from analyzing child and adult hand drawings. Our analogy is that the 'cleanness' of the hand-drawn lines corresponds to the quality of the data. We hypothesize that sketchiness is a good metaphor for the qualitative visualization of uncertainty information.. Our contribution is two-fold: (1) we provide an empirically-based method to generate line trajectories that resemble hand-drawn strokes of various levels of proficiency-ranging from child to adult strokeswhere the amount of deviations in the line corresponds to the level of uncertainty in the data; (2) we present a qualitative and quantitative evaluation of four uncertainty visualization techniques using blur, dashing, grayscale, and sketchiness. In particular, we attempt to answer the following questions: (a) can people intuitively associate sketchiness to uncertainty, (b) is sketchiness as effective for depicting uncertain information as the other visualization techniques, and (c) which method do people subjectively prefer. The remainder of the paper is organized as follows. After discussing previous work, we first present our model for generating sketchy lines, and then present a series of studies that answer our questions on intuitiveness, accuracy of reading uncertain visualizations, and subjective viewer preference in regards to the different uncertainty visualizations. In this paper, we have reported on seven user studies to investigate the appropriateness of using sketchiness as a dedicated visual variable for depicting uncertainty. We started by studying characteristics of collected hand-drawn strokes. Findings from this evaluation and existing work on a generative model of hand movement fed into our method for synthesizing sketchy lines that mimic stroke characteristics of handdrawn lines. Our mapping for uncertainty depiction consists of varying the amount of pixel deviations from a straight line in accordance to the amount of uncertainty in the data. An online study using Amazon Mechanical Turk provided evidence that lines generated by our model were significantly more often thought to be handwritten than not. The metrics used in our analysis were the absolute perception error AbsErr and the perceived magnitude level PerMag of a line. As done by similar magnitude estimation studies (e. g., [12] ) we define AbsErr as the absolute difference between the true percent of the stimulus compared to the modulus and the reported estimation percent |reported level − true level|. Absolute magnitude errors have a skewed distribution and, as suggested by Cleveland and McGill [12] , we normalize it by using the log variation of this metric for our analysis log 2 ( 1 8 + AbsErr). The means reported here are before normalization. Trials were marked as outliers when metrics were beyond two standard deviations from the mean for a given technique and level. 161 trials (5% of all trials) were identified as outliers and removed from further analysis. We performed an ANOVA and post-hoc pair-wise mean comparison p-values are adjusted using the Bonferroni criterion.. We ran our study in batches of 48 trials. For each batch we calculated the mean for each visual variable. After the third batch the means stabilized. Our results show that dashing is the preferred style for the participants (chosen by 68.3%), in agreement with our hypothesis (H7). However, blur (chosen by 15.10%) did better than both grayscale (chosen by 12.5%) and sketchiness (chosen by 3.12%).. We were able to process comments from 155 participants (80.7% of the responses). A closer look at their comments shows that the primary reason for preferring dashing over the other visual variables was 'noticeability' as participants valued the ability to easily distinguish between data and uncertainty (26.5% of our participants), whilst blur was chosen because it was regarded as congruent to what uncertainty conveys in terms of vagueness and reduced precision (4.5% of our participants). Those who preferred grayscale did so because they deemed it easy to understand (2% of our participants).. We only had four comments on the use of sketchiness, two of which argued that it is an intuitive way to represent instability in the data. More interesting, and which may explain the low preference score for sketchiness, are comments by participants who argued against the use of sketchiness. The primary reason for this seems to be that sketchiness tends to imply a disliked notion of 'unprofessionalism' or informality. Some participants thus disregarded it as a standard visual variable (4.5%). This highlights the need for paying attention to the context in which sketchiness is applied as a visual variable to denote uncertainty. We note that abstract and non-abstract contexts did not show different results in terms of user preference. Application contexts however may be a more influential factor in terms of impact on user subjective influence as will be discussed in the next section. The previous work that relates to our own can generally be thought of as threefold: (a) work in non-photorealistic rendering that studies the generation of primitives that appear sketchy or hand-drawn as well as their applications, (b) methods to depict uncertainty data, and (c) user studies that examine how people perceive and interpret uncertain data depictions. We discuss each of these three fields in turn.

O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Adaptive Continuous-Scale Morphology for Matrix Fields In this article we consider adaptive, PDE-driven morphological operations for 3D matrix fields arising e.g. in diffusion tensor magnetic resonance imaging (DT-MRI). The anisotropic evolution is steered by a matrix constructed from a structure tensor for matrix valued data. An important novelty is an intrinsically one-dimensional directional variant of the matrix-valued upwind schemes such as the Rouy-Tourin scheme. It enables our method to complete or enhance anisotropic structures effectively. A special advantage of our approach is that upwind schemes are utilised only in their basic one-dimensional version, hence avoiding grid effects and leading to an accurate algorithm. No higher dimensional variants of the schemes themselves are required. Experiments with synthetic and real-world data substantiate the gap-closing and line-completing properties of the proposed method.B. Burgeth ( ) · L. Pizarro · M. Breuß · J. Weickert One of the primary tasks of mathematical morphology is the enhancement and extraction of shape information from image objects. This task is successfully tackled with a multitude of morphological operations based on the fundamental dilation and erosion processes. Dilation and erosion can be realised in a set-theoretic or ordering based framework, see e.g. (Matheron 1967 (Matheron , 1975 Serra 1967 Serra , 1982 Serra , 1988 Soille 2003) , but it may also be implemented within the context of partial differential equations (PDE) (Alvarez et al. 1993; Arehart et al. 1993; Brockett and Maragos 1994; Sapiro et al. 1993; van den Boomgaard 1992) and their numerical solution schemes (see (Breuß and Weickert 2006) as well as the extensive list of literature cited there). The PDE-based approach is conceptually attractive since it allows for digital scalability and even adaptivity of the represented structuring element. This versatility was exploited, for example in Breuß et al. (2007) to create an adaptive, PDE-based dilation process for grey value images. In Burgeth et al. (2009b) the idea of morphological adaptivity has been transferred to the setting of matrix fields utilising the operator-algebraic framework proposed in Burgeth et al. (2007c) . Matrix fields offer the opportunity of describing anisotropy in physical measurements and in image processing models, see Weickert and Hagen (2006) , Laidlaw and Weickert (2009) for an overview. In diffusion tensor magnetic resonance imaging (DT-MRI), for example, information about the diffusive properties of water molecules is captured in symmetric positive definite matrices. The corresponding matrix field reflects the structure of the tissue under examination (Basser et al. 1994) . The goal of Burgeth et al. (2009b) was to enhance line-like and coherent structures in DT-MRI data. In this article we propose a concept for PDE-based adaptive morphology for matrix fields, involving directional derivatives in the formulation of the PDE-based dilation and erosion processes. In contrast to the approach in Burgeth et al. (2009b) and as a 3D-extension of the work in Pizarro et al. (2009) the numerical realisation employed in this article takes advantage of the accurate calculation of directional derivatives that relies on tri-linear interpolation.. We will start from a scalar adaptive formulation for ddimensional data u in form of the dilation PDE We have presented a method for an adaptive, PDE-based dilation and erosion processes in the setting of matrix fields. The evolution governed by matrix-valued PDEs is guided by a steering tensor whose construction relies on the full structure tensor for matrix data.. In order to enable proper directional steering we extended the schemes of Rouy-Tourin and the FCT method in two ways: First, turning them into directional schemes based on directional finite differences via interpolation. Second, by means of advanced matrix calculus, extending these directional variants to matrix fields solving the matrix-valued adaptive PDEs of dilation and erosion. Having these two key operations at our disposal we were able to propose higher order morphological operators such as morphological derivatives that are adaptive and act on matrix fields.. As a proof-of-concept we applied these adaptive morphological operations to synthetic and real DT-MRI data. The tests reveal that the various adaptive morphological operators behave as one might expected from their scalar counterparts. For instance, the adaptive dilation and closing are indeed capable of filling in missing data and to complete directional structures. We also confirmed that the FCT performs preferable over the scheme of Rouy and Tourin.. The direct application of an elementary morphological operation is usually not suitable for improving an image or extracting useful information from it. Morphology (adaptive or not) gains its power from the capability of concatenating and combining elementary operations according to the task at hand. We hope to have just opened the adaptive morphological toolbox for matrix fields. In this respect the proposed approach to adaptive morphology for matrix fields may have its merits, for example, in the segmentation of directional structures or as a preprocessing step for fiber tracking algorithms in medical imaging. The matrix data are visualised as an ellipsoid in each voxel via the level sets of quadratic form {v ∈ R 3 : v U −2 (i, j, k)v = const.}. It is associated with the matrix U(i, j, k) ∈ Sym + 3 (R) representing the matrix field at voxel (ih x , jh y , kh z ). By using U −2 the length of the semi-axes of the ellipsoid correspond directly with the three eigenvalues of the matrix. Changing the constant const. amounts to a mere scaling of the ellipsoids. Note that only positive definite matrices produce ellipsoids as level sets of its quadratic form.. In the following we employ the Rouy-Tourin scheme, the FCT scheme, and their corresponding directional versions. In all schemes we use a grid size h x = h y = h z = 1.

O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


A Transformation Sequencing Approach To Pseudorandom Number Generation This paper presents a new approach to designing pseudorandom number generators based on cellular automata. Current cellular automata designs either focus on i) ensuring desirable sequence properties such as maximum length period, balanced distribution of bits and uniform distribution of n-bit tuples etc. or ii) ensuring the generated sequences pass stringent randomness tests. In this work, important design patterns are first identified from the latter approach and then incorporated into cellular automata such that the desirable sequence properties are preserved like in the former approach. Preliminary experiment results show that the new cellular automata designed have potential in passing all DIEHARD tests. Random numbers are needed in a variety of scientific, mathematical, engineering and industrial applications including cryptography, built-in self test, artificial evolution such as genetic algorithm and simulated annealing, Monte Carlo simulations, etc [1, 6] . Finding appropriate pseudorandom number generators (PRNG) is a difficult task [5] -it is known that every PRNG has to fail in a certain simulation/statistical test, or in certain setups that interfere with the particular regularities of a given PRNG and thus exhibits the hidden correlations between numbers. It is also desirable to have low-cost PRNG that can generate sequences with desirable properties such as maximum period length, balanced distribution of 1 and 0, uniform distribution of the n-bit states, etc.. Wolfram [1] first proposed using the one-dimensional cellular automata (1-d CA) as a PRNG. Figure 1 shows a 4-bit CA -an array of four binary registers where each register's new state ( 1) t k s + is computed by a transformation function k Φ over a neighborhood of three nearest registers' current states, In previously published CA PRNG works [7, 8, [11] [12] [13] [14] [15] [16] [17] [18] , authors have generally focused on a particular objective(s) from the full set of desirable PRNG properties. In [7, 8, 11, 12] , the focus is on analytical techniques to configure the set of Other researchers [13] [14] [15] [16] [17] [18] hypothesized that by making structural changes to the CA, the 3 randomness quality of the generated sequences. { , , , ). s s s can be improved and verified though empirical testing with the DIEHARD statistical test suite [9] . These include changing the connection structure or type of neighborhood to draw inputs [3, 16, 18] from, dimensionality of CA [12, 13] , the individual transformation function used for each register [2, 14, 15, 17] , etc.. In conventional CA, the neighborhood of nearest three inputs ( results suggested that strong correlation between adjacent registers may be detrimental to the randomness quality of generated sequences. This hypothesis is also affirmed in [4] where the authors concluded that correlation dies out between registers that are at least four sites apart. Interestingly, we do not know of any proposal in the literature that contains theoretical analysis on the properties of the proposed CA as well as DIEHARD test results on the generated sequences. We conducted our own DIEHARD testing on maximum length sequences [8] and found that their randomness quality is generally not satisfactory [17] . On the other hand, analysis is difficult and seldom done for the highly complex CA designed to pass all DIEHARD tests; performance evaluation is usually based on experimental results.. For example, CA with nonlinear transformation functions [18] cannot be studied using the matrix approach [2] while others are difficult to model mathematically due to either the set of time-varying transformations used or the behavior to be effected.. To circumvent analysis, some authors [13] [14] [15] [16] applied genetic algorithms [10] with the fitness function defined from the results of some relevant randomness metrics such as entropy, correlation, DIEHARD, etc. to evolve the CA transformation. However, for CA to be confidently deployed as PRNG in many applications, rigorous testing needs to be conducted -this slows down evolutionary approaches tremendously because of the vast number of fitness evaluations to be performed repeatedly. For example, the 2-d array CA [16] is shown to pass all DIEHARD tests, but only three suitable 5 configurations were found after evolution from an initial population of 80 candidates. It is also observed that relatively large CA sizes were often used in the proposals reviewedpossibly to avoid small period lengths that can arise since the states of these CA can reside in more than one cycle.. Some recent designs of CA seem to be driven by making changes in the CA structure first, and the generated sequences are then checked for desired properties and tested for DIEHARD. When we design a CA to generate highly random number sequences, the focus should be on its global behavior -the desired sequence properties. While we are certain that the global behavior is brought about from the interaction among individual registers, there are unfortunately no clear links as to how desired global behavior can be achieved by considering separately the individual behavior of the registers contained in the CA. We can study the interaction between a few registers but this quickly becomes infeasible due to the exponential growth of possible configurations that can arise from the multiplicity of register functions, arrangements of registers, etc.. Can CA-level modifications be applied similarly at the CA transformation level that will result in the solutions we expect, such that each register function is specifically modified and the concerted effect of all modified registers generates the sequence properties we look for? Ultimately, the randomness quality of sequences generated still depends on the overall. We have surveyed the present state of art in CA based PRNG and identified common design patterns in previous CA works that passed all 19 DIEHARD tests: (a) time-varying transformations and (b) transformation functions with more inputs over a non-local neighborhood. The high randomness quality of generated sequences is possibly attributed to these design patterns and thus they should be incorporated. Bearing desirable, analytical properties in mind, we have therefore come up with the new Transformation Sequencing (TS) approach that merges the objectives from both analytical and empirical works to provide guaranteed sequence properties:. The concept of transformation sequences will be introduced in Section 2 and some properties of generated sequences will be highlighted in Section 3. Possible implementations based on the TS approach are also suggested. DIEHARD results are presented in Section 4. The conclusions are drawn in Section 5.

O O O O O B I I O O O O O O O O O O O O O B I O B I O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


As-Rigid-As-Possible Surface Morphing Abstract This paper presents a new morphing method based on the "as-rigid-as-possible" approach. Unlike the original as-rigid-as-possible method, we avoid the need to construct a consistent tetrahedral mesh, but instead require a consistent triangle surface mesh and from it create a tetrahedron for each surface triangle. Our new approach has several significant advantages. It is much easier to create a consistent triangle mesh than to create a consistent tetrahedral mesh. Secondly, the equations arising from our approach can be solved much more efficiently than the corresponding equations for a tetrahedral mesh. Finally, by incorporating the translation vector in the energy functional controlling interpolation, our new method does not need the user to arbitrarily fix any vertex to obtain a solution, allowing artists automatic control of interpolated mesh positions. Morphing, also called metamorphosis or shape blending, is a technique used to smoothly transform one graphical shape into another. Many 2D morphing methods have been developed to assist 2D animation making [1] . In recent years, with the introduction of 3D cartooning techniques, 3D morphing has increased in importance in games and animation production.. The most popular type of model used in 3D graphics is a surface triangle mesh. In this paper, we propose a new morphing method that works well even when two input 3D triangle meshes have very different shapes. Many successful approaches to morphing use a framework based on firstly creating consistent meshes for the original source and target models, i.e., source and target meshes having one to one correspondences between their vertices, edges and faces. Given these, a path may then be determined for each vertex to follow during the morphing process. Much work has considered the first issue [2] [3] [4] ; this paper focuses on the trajectory problem. The approach used in this paper is based on the as-rigid-as-possible warping method [5] for generating a smooth morph between two quite different shapes.. However, that method requires 3D objects to be represented as volume, tetrahedral meshes. Unfortunately, as is well known, meshing complex solid is not easy, and creating consistent tetrahedral meshes is notoriously difficult. Indeed, we are unaware of any satisfactory general solution to that problem.. Our new method has the following merits compared to the original as-rigid-as-possible method, while still providing very good 3D morphing results.. • Our method works directly with surface triangle meshes instead of requiring tetrahedral meshes that represent the interior of each object.. • Creating consistent triangle meshes is a much easier problem to solve than creating consistent tetrahedral meshes.. • The number of vertices in consistent triangle meshes is far fewer than that in corresponding tetrahedral meshes of the same objects at the same resolution, resulting in greatly reduced computing time.. • By incorporating the translation vector into our energy function, we do not need to fix some arbitrary vertex when computing the solution; the original method needs user selection of at least one fixed vertex. Morphing using Alexa's method [5] .. (c) Morphing using our method. In (b), initial and final tetrahedral meshes are shown in gray, while in (c) initial and final triangle meshes are shown.. The inputs to our method are a source mesh and a target mesh, in the form of consistent triangle meshes, and the desired number of intermediate frames. The output is a sequence of intermediate meshes forming a morphing sequence. Fig.1 illustrates the results produced by linear interpolation, Alexa's original as-rigid-as-possible volume warping method [5] , and our new surface-mesh-based method. Our method produces almost identical results to Alexa's volume-based morphing method, but at much lower computational cost, and without the need to produce volume meshes and make them consistent.. We note that [6] uses ideas somewhat similar to ours to solve the deformation problem. Nevertheless, there is a significant difference. In our method, we incorporate the translation vector into the error function, avoiding the need for the user to fix the location of any vertex in the solution process. Appropriate choice of the vertex to fix is not a simple task, so our approach simplifies the interface for the user. Nevertheless, in the degenerate case, our error function corresponds to the form not using a translation vector, allowing the artist to fix any vertex if desired, giving the artist the freedom to choose how much explicit control will be used. This paper has shown how to make Alexa's morphing method much more practical, requiring only surface meshes rather than volume meshes. Our approach not only avoids the complex process of consistent tetrahedral meshing, but also reduces the computation time, since surface triangle meshes have many fewer vertices than corresponding volume tetrahedral meshes. Unlike many other morphing methods using intrinsic representations, our approach does not need to fix any vertex during the solution process, and provides automatic control of mesh position. Our method requires the solution of 3 linear systems which can be done very rapidly using direct Cholesky decomposition. Our method can also be easily modified for use in the solution of 2D polygon morphing problems. In summary, our method is of wide applicability.. The main limitation of our work is inherited from [5] and shared by [24] : the largest rotation angle may not exceed π, due to the use of quaternion interpolation. Fig.9 gives 2 similar 3D examples but the largest rotation angle is a little different. In Fig.9 (a), our method works well where the largest rotation angle is a little less than π. In Fig.9(b) , the largest rotation angle is a little larger than π, and the morphing result is in error since the quaternion interpolation cannot distinguish angle larger or smaller than π. A simple way to overcome the analogous problem in 2D is given in [38] [39] , but it cannot be extended to 3D. The morphing method in [30] can be used in cases where the rotation angle exceeds π, but it requires the solution of a nonlinear system, which is less efficient. We intend to further investigate removing this restriction. We have applied our method to various models, both morphing between two different objects, and performing morphing corresponding to various fundamental deformations of a single object. Typical experimental results are shown in Fig.2(b), Figs. 3∼6 . In each figure, the first and last images show the given source and target meshes, while intermediate images show morphing results produced by our method. All experiments were performed on a PC with a 3.2 GHz Pentium 4 CPU with 1 GB memory. Table 1 shows the time taken per frame to compute the intermediate models illustrated in this paper. Experiments show that the morphing results generated by our method are smooth and natural, and that no shape jittering or wobbling occurs, which may be a problem for other morphing methods relying on a fixed vertex.. Our method can also be easily modified for use in the solution of 2D polygon morphing problems, turning polygon edges into virtual triangles in a manner analogous to the 3D case. After adding a virtual vertex on each edge, the transformation relation between each pair of virtual triangles is calculated, and the 3D equations of this paper can be directly replaced by 2D equivalents in an obvious manner. Fig.8 shows a 2D polygon morphing result produced by our method, in which each polygon has 196 vertices. Besides compared with Alexa's mothod [5] as in Fig.1 , our method is also compared with Xu's method as in Fig.8 . It is obvious that our method has very similar results compared to Alexa and Xu's methods if proper vertex is fixed in those two methods. Compared to Alexa's method, our method highly increase the solving efficiency and does not need complex solid mesh. Though Xu's method and ours have equivalent efficiency, our method does not need to fix any vertex and much simplify the artist operation, while Xu's method may suffer from the fixed vertex selection problem. Morphing using Xu's method [24] . The results of the two methods are very similar. Methods for 3D morphing typically take one of two approaches. The first blends simpler volumes into which the initial and final shapes have been embedded [7] [8] [9] . The second directly manipulates an explicit geometric object representation, typically a surface mesh or volume mesh [2, 5] . The first class of approach has the advantage of being able to morph objects having different topologies. However, mesh-based methods typically produce better results -often, shape boundaries resulting from use of embedding methods are not smooth enough. Thus, the focus of morphing has shifted towards mesh-based approaches in recent years. Our method is based on use of surface triangle meshes.. As noted earlier, explicit surface or volume mesh morphing typically uses two main steps: creating consistent meshes, and determining vertex trajectories. We first briefly review the former, then consider the latter in more detail as it is the main focus of this paper.. Various work has considered how to create consistent meshes for pairs of shapes of genus zero, using a topological merging method. A frequent approach is to first dissect the source and target shapes into several pieces [10] , then to construct a local parameterization for each piece, and finally to perform merging [4, 11] or remeshing [2, 12] to create the consistent mesh. Praun [13] gives a tracing method which can dissect source and target shapes automatically. Many of the above papers concentrate on the problem of creating consistent meshes, and only use simple linear vertex coordinate interpolation methods to find vertex trajectories. For source and target objects with very similar shapes, linear interpolation is sufficient to produce simple visual effects. However, if objects undergo large deformations, especially bending, linear interpolation always leads to visually unacceptable shrinkage of intermediate shapes -see, for example, Fig.1(a) .. Using global Euclidean coordinates at each vertex does not capture local shape information and vertex connectivity information directly. Some work thus tries to interpolate other intrinsic representations based on local shape information, including barycentric coordinates, Laplacian coordinates, and other quantities which represent local intrinsic attributes of the mesh, as we now discuss.. Floater and Gotsman [14] used barycentric coordinate interpolation to find suitable paths for convex 2D shapes. This method has been extended for concave shapes by embedding them into a convex shape [15] . Ju et al. [16] used mean value coordinates (a generalisation of barycentric coordinates) to control 2D shape deformation. The same principles can also be used for 3D morphing. Mean value coordinates are invariant under translation and rotation but are not invariant under scaling, restricting their usefulness.. Alexa et al. [17] suggested interpolation of Laplacian coordinates to determine morphing trajectories and discussed how to control morphing locally. Laplacian coordinates are invariant under translation but are not under rotation and scaling. Later work [18] [19] has considered how to modify interpolated Laplacian coordinates to provide better morphing results. Then, Hu [20] extended this approach by interpolating the curvature flow Laplacian operator.. Sheffer and Kraevoy [21] introduced so-called pyramid coordinates into mesh editing and morphing. While these coordinates are rotation-invariant, reconstruction of Cartesian coordinates from them requires time consuming non-linear optimization. Lipman [22] proposed rotation invariant differential coordinates by considering tangential and normal components relative to the surface. Their method requires the solution of two linear systems for each intermediate frame, and hence roughly twice the amount of work of other similar methods.. Yu et al. [23] introduced a technique which interpolates gradients of the surface mesh; reconstruction of in-between surfaces requires the solution of a Poisson equation. These gradients are again not invariant under rotation, so must be modified when rotation is involved, using a similar method to that used for Laplacian coordinates. Xu et al. [24] generalised this technique for use in morphing. They calculate intermediate surface gradients by quaternion interpolation, and reconstruct surfaces by solving a Poisson equation. This method produces good results in many cases. More detailed introduction to the gradient method can be found in [25] . Another important morphing method is the as-rigidas-possible approach, which can handle source and target shapes with large differences. Shoemake [26] proposed the use of a global affine transformation to represent distortion between source and target shapes. By decomposing the transformation matrix into separate rotational and irrotational parts, and interpolating them independently, the overall transformation matrix and shape of each intermediate frame can be calculated. Alexa [5] developed this idea to determine the local transformation separately for each mesh element (interior triangles for 2D morphing or interior tetrahedra for 3D morphing) instead of the whole shape, then used optimization to minimize the difference between the desired transformation and the actual transformation which is applied, taking into account the connectivity constraints on adjacent mesh elements. This method uses a tetrahedral volume mesh to solve 3D morphing problems. However, most models used in animation are represented using surface triangle meshes. It is a difficult problem to generate a corresponding solid tetrahedral mesh from a triangle mesh, especially the one with well-shaped elements. Obviously, it is even more difficult to create consistent meshes for source and target shapes, making Alexa's method very hard to use in practice for 3D morphing. Simplex transformation has also been used with surface triangle meshes to perform deformation learnt from existing examples [27] . Hu et al. [28] presented a method based on minimization of deformation energy, which is novel in that it does not use interpolation, but is a global optimization method. Yan et al. [29] [30] proposed the use of strain fields from mechanics for smooth interpolation. This method can provide very uniform results even if the source and target meshes are quite different, but it requires the solution of a nonlinear equation and again, it is not easy to create consistent tetrahedral meshes in 3D. Bao et al. [31] also used a similar idea for point cloud morphing. Although many morphing methods use different algorithms, they are typically guided by the same physical principle -that of keeping the shape as rigid as possible as it changes. This concept has also been used in geometry editing and parametrization [32] [33] [34] . In this paper, we present a new method based on Alexa's as-rigid-as-possible method [5] . Our modification allows this method to be applied to surface meshes directly without the need for construction of consistent tetrahedral meshes. As a further consequential benefit, our method requires much less computation than Alexa's original method. Our method can be used in cases involving large rotations, and no arbitrary vertex needs to be fixed by the user in order to compute a solution to the morphing problem.. We explain our method in Section 3, demonstrate the results in Section 4, and finally draw conclusions in Section 5.

O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O


Architecture-aware optimization targeting multithreaded stream computing Optimizing program execution targeted for Graphics Processing Units (GPUs) can be very challenging. Our ability to efficiently map serial code to a GPU or stream processing platform is a time consuming task and is greatly hampered by a lack of detail about the underlying hardware. Programmers are left to attempt trial and error to produce optimized codes.Recent publication of the underlying instruction set architecture (ISA) of the AMD/ATI GPU has allowed researchers to begin to propose aggressive optimizations. In this work, we present an optimization methodology that utilizes this information to accelerate programs on AMD/ATI GPUs. We start by defining optimization spaces that guide our work. We begin with disassembled machine code and collect program statistics provided by the AMD Graphics Shader Analyzer (GSA) profiling toolset. We explore optimizations targeting three different computing resources: 1) ALUs, 2) fetch bandwidth, and 3) thread usage, and present optimization techniques that consider how to better utilize each resource.We demonstrate the effectiveness of our proposed optimization approach on an AMD Radeon HD3870 GPU using the Brook+ stream programming language. We describe our optimizations using two commonly-used GPGPU applications that present very different program characteristics and optimization spaces: matrix multiplication and back-projection for medical image reconstruction. Our results show that optimized code can improve performance by 1.45x-6.7x as compared to unoptimized code run on the same GPU platform.Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. The speedup obtained with our optimized implementations are 882x (matrix multiply) and 19x (back-projection) faster as compared with serial implementations run on an Intel 2.66 GHz Core 2 Duo with a 2 GB main memory.Second Workshop on General-Purpose Computation on Graphics Processing Units (GPGPU A recent development in graphics processing units (GPUs) is the delivery of a programmable unified architecture that makes it possible to map a data-parallel compute-intensive non-graphics program onto a GPU. This has spawned a new single-chip desktop supercomputing era. The GPU's raw computing power and superior cost/performance make it an attractive solution for a wide range of applications. Stream computing 1 harnesses the tremendous processing power of the GPU for a wide range of data-parallel compute-intensive applications. Major GPU hardware vendors have recently introduced software development kits (SDKs) -Brook+ for AMD GPUs and CUDA for NVIDIA GPUs -to accelerate the rate of adoption in high performance computing fields.. Stream computing on commodity GPUs has numerous advantages over conventional parallel systems [9] [11] [12] . The greatest of all is its unprecedented cost/performance; GPUs cost less than a dollar per delivered GFLOP. This is an order of magnitude less expensive than any other parallel systems. GPUs are ubiquitous -they are installed on every PC desktop. GPUs also provide superior Watt per GFLOP. All of these advantages combined make stream computing on GPUs a very attractive high performance computing platform.. Even though our ability to generate general purpose applications on GPUs has been facilitated with the introduction of SDKs provided by hardware vendors or third parties, it is far from trivial to optimize code running on these devices. The introduction of SDKs on GPUs was a great software engineering effort to abstract away all the intricacies of graphics hardware, but abstraction usually comes at the cost of performance.. Prior work has explored new optimization methods targeting multithreaded GPUs. Silberstein et al. [14] presented a technique for designing memory-bound algorithms with high data reuse in CUDA on NVIDIA GPUs. The idea is to provide a user-managed software cache that maps shared memory onto hardware explicitly. The problem with this approach, however, is that it is not applicable to kernels that require large memory, many general purpose registers (GPRs), and possess a large code footprint. Another limitation of this approach is that it is not applicable to GPUs which do not support shared memory (e.g., the AMD R6xx families).. Ryoo et al. [13] address the complexities faced when developing optimizations for multithreaded GPU programming and proposed a methodology for reducing workload involved in the optimization process. The idea is to plot the configurations and examine only those configurations on a Paretooptimal curve. The main limitation of this work was that the results were only applicable to the NVIDIA platforms used to solve multi-variable optimization problems. They also failed to address memory-bound applications, which is the most common case arising in GPGPU applications.. In this paper, we propose an architecture-aware optimization methods for Brook+ stream programming on AMD GPUs. Our approach is based on observations obtained from inspecting disassembled machine code and static statistics obtained from a profiling tool. We also break down the code optimization space into: 1) ALU unit utilization, 2) fetch unit utilization, and 3) thread utilization and present optimization techniques for each resource. We then apply these techniques to two commonly-used parallel programming building blocks: matrix multiplication for basic linear algebra subprograms (BLAS) and back projection for tomographic image reconstruction (back projection is commonly used in iterative reconstruction techniques (IRT) which are now commercially available in medical settings due to their superior performance) to demonstrate the effectiveness of our proposed optimization methods with the Brook+ stream programming language. These two applications present very different characteristics and optimization spaces to clearly demonstrate the value of the optimization mechanisms we are proposing. To the best of our knowledge, our work is the first to explore optimization spaces using a structured approach for AMD stream computing. Although many of the optimization techniques proposed in this paper are specific to AMD's stream computing platform, our structured optimization methodology that considers GPU-specific hardware features such as ALUs, texture memory, and thread utilization can be applied to any other GPU platforms. Efficient code optimization on a GPU has been a major hurdle since the introduction of programming tools that abstract away the details of the underlying hardware. In this paper we presented a new optimization process targeting stream programming on a GPU. Our approach identifies optimization spaces from inspecting disassembled machine code and associated statistics provided by an AMD profiling tool.. We have illustrated the utility of this approach using two different kernels including a complete medical imaging application. Our results clearly show how different applications benefit from approaching optimization from three different perspectives (i.e., optimization spaces). We show how to identify bottlenecks in each of these spaces and propose specific optimizations that need to be applied to obtain better performance. Another important optimization space we did not cover in this paper is associated with the memory access pattern. Stream computing is very sensitive to memory operations and performance is greatly impacted when faced with hardware unfriendly memory operations. This is on our list for future work. We would also like to explore the optimization space and its effectiveness of intermediate language (IL) level programming provided by GPU vendors. At a system level, exploiting asynchronous features present on GPUs is another interesting optimization space that we can explore. One approach would be to utilize a CPU core as another coprocessor while the GPU is executing, assuming no data dependencies occur between the output the GPU and the input to the CPU, and vice-versa.

O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Determining and characterizing the reused text for plagiarism detection An important task in plagiarism detection is determining and measuring similar text portions between a given pair of documents. One of the main difficulties of this task resides on the fact that reused text is commonly modified with the aim of covering or camouflaging the plagiarism. Another difficulty is that not all similar text fragments are examples of plagiarism, since thematic coincidences also tend to produce portions of similar text. In order to tackle these problems, we propose a novel method for detecting likely portions of reused text. This method is able to detect common actions performed by plagiarists such as word deletion, insertion and transposition, allowing to obtain plausible portions of reused text. We also propose representing the identified reused text by means of a set of features that denote its degree of plagiarism, relevance and fragmentation. This new representation aims to facilitate the recognition of plagiarism by considering diverse characteristics of the reused text during the classification phase. Experimental results employing a supervised classification strategy showed that the proposed method is able to outperform traditionally used approaches. Plagiarism is known as intellectual theft: it consists in using words (ideas) of others and presenting them as your own. Nowadays, due to current technologies for creating and disseminating electronic information, it is very simple to compose a new document by copying sections from different sources extracted from the Web. This situation has caused the growing of the plagiarism phenomenon, and, at the same time, it has motivated the development of tools for its automatic detection.. Very recently, major publishers, namely Elsevier and Springer have showed their interest and concern to fight plagiarism [5] . Hence, by using a software called CrossCheck, they scan submitted papers with the aim of finding verbatim or almost identical chunks of text that already appear in previously published papers. Several tests using the CrossCheck software over different journals showed that from 6% to 23% of the submitted articles had to be rejected because they contain a considerable degree of plagiarism. Although CrossCheck is able to uncover plagiarists, the software is susceptible to find false positives, since it only estimates a percentage of similarity between documents.. In this paper we focus on the problem of discriminating plagiarized from freeplagiarized suspicious documents by determining the reused text sections from an original document. We assume that plagiarism is done by reusing some portions of text that can not be considered as common knowledge of the domain. In particular, we consider the task of finding similarities between a suspicious document and a given original document that are more than just a coincidence and more likely to be result of copying [8] . This is a very complex task since reused text is commonly modified with the aim of covering or camouflaging the plagiarism. To date, most approaches have only partially addressed this issue by measuring lexical and structural similarity of documents by means of different kinds of features such as single words [9, 27] , fixed length substrings (i.e., n−grams) [3, 9] , variable length substrings [4, 9] , dependency relations or a combination of them [7] . The main drawback of these approaches is that they carry out the classification considering only information about the degree of overlap between the suspicious and source documents. Therefore, these strategies are affected by the thematic correspondence of the documents, which implies the existence of common domain-specific word sequences, and, as consequence causes an overestimation of their overlap [8] .. In order to tackle the above problem we propose a novel approach for finding the portions of possible reused text. Our method, called the Rewriting Index, assigns a weight to each word contained in the suspicious document that describes its degree of membership to a possible portion of plagiarized text. This way, the proposed method is able to discover text that has suffered from some modifications such as word elimination, insertion, and transposition, allowing to perform a partial matching between documents (i. e. find portions of text that are similar but with some change by a paraphrasing). Additionally, we also consider more information during the classification process of the documents. Our idea is to characterize the portions of possible reused text by their relevance and fragmentation. In particular, we consider a set of features that denote the frequency of occurrence of portions of reused text as well as their length distribution. Our hypothesis is that the larger and the less frequent the portions of reused text, the greater the evidence of plagiarism. In other words, we consider that frequent portions of reused text tend to correspond to domain specific terminology, and that small portions of possible reused text may be co-incidental, and therefore, they are not a clear signal of plagiarism.. The experimental evaluation of the proposed approach was carried out on a subset of the METER corpus [12] and on the Plagiarised Short Answers corpus [10] . In particular, we model the document plagiarism detection as a classification problem. Our goal was to show that using the portions of reused text obtained with the Rewriting Index method, and characterizing them by the proposed set of features, it is possible to achieve a greater discrimination performance between plagiarized and non-plagiarized documents than only considering their general degree of overlap.. The rest of the paper is organized as follows. Section 2 presents some recent work on plagiarism detection. Section 3 describes the proposed algorithm for finding portions of possible reused text as well as the formal definition of the proposed features. Section 4 presents the experimental configuration as well as the results achieved in the two test collections. Finally, Section 5 depicts our conclusions and formulates some directions for future work. In this paper we have proposed a new method for detecting document plagiarism. Its main contribution focuses on the identification of similar and -possible- reused word strings between a original and a suspicious document that are not necessary an exact copy. This method, called the Rewriting Index, assigns a weight to each word from the suspicious document in order to describe its degree of membership to a portion of plagiarized text. This way, it is able to discover text that has suffered from some modifications such as word elimination, insertion, and transposition, allowing to perform a partial matching between documents. Another important contribution of this paper is the proposal of a richer representation of the portions of reused text. This new representation helps the classification algorithms to better discriminate between plagiarized and non-plagiarized documents by including features that describe not only the number of reused text portions but also their relevance and fragmentation. Additionally, we have proposed a simple methodology that allows our proposed method for automatically select the best configuration of its three main parameter values.. Experimental results on the METER and PSA corpora are encouraging since they showed the appropriateness of the proposed method for the task at hand. Particularly, they outperformed the accuracy results from current methods by 5.2% and 7.1% on the METER and PSA corpora, respectively. As future work we plan to improve the Rewriting Index method by considering synonyms and applying some morphological normalizations. In addition, we plan to explore the use of the ReI feature as a document similarity measure in other related tasks such as document classification and document clustering. One of the main tasks in plagiarism detection consists in determining if the similarities between a suspicious and a source (original) document are more than just coincidence and more likely to be result of copying [8] . Broadly speaking, this task includes two main phases: the searching of plagiarism evidence, and the classification of plagiarized documents based on the accumulated evidence.. The main purpose of the first phase is to find similar or reused text portions between the given two documents. Some works have searched for these similarities at the syntactic level by identifying common POS sequences [16, 7] . On the other extreme, some works have searched for similarities at the lexical level, using common single words as the main evidence of plagiarism [27, 24, 17] . Finally, in between these two approaches, there are works that consider word sequences. Some of them search for common fixed-length sequences known as n−grams [22, 13, 6, 3, 2, 19, 21, 14] , whereas others have used variable length sequences in order to preserve the integrity of the evidence [6, 4, 9, 18] .. In the second phase the collected evidence is transformed on a measure or set of measures that indicate the level of copy in the suspicious document. Particularly, most current methods use a representation based on the proportion of positive evidence in relation to the size of the suspicious document [19, 22, 15, 21, 14] or to the size of both documents [6, 25, 1] . This representation is used in the documents classification process; common approach consists of applying a manuallydefined threshold function on the computed measure [26, 4, 23, 3, 21] . On the contrary, when the plagiarism evidence is expressed by a set of measures, most methods apply machine learning techniques to automatically define the threshold function [16, 7, 9, 11] .. In this paper we propose some ideas to enhance both phases of the plagiarism detection process. First, we propose a new method to find the portions of possible reused text. This method uses a fuzzy string matching automata that is able to detect common actions of plagiarism such as word deletion, insertion and transposition, and, therefore, that allows to collect evidence with a high degree of rewriting, which current methods tend to ignore. Second, we propose a new representation of the plagiarism evidence that helps to describe more appropriately its relevance and diversity and, consequently, allows taking further advantage of the capabilities of machine learning techniques to handle representations with multiple features.

O O O O O O O B I O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O


Solving Nonlinear Eigenvalue Problems by Using p-version of FEM Abstract-Two nonlinear eigenvalue problems associated with strongly nonlinear partial differential equations are considered under a Dirichlet boundary condition on a square domain. The p-version of the finiteelement method ia applied to evaluate the first eigenvalue and the corresponding eigenfunction. The numerical results are compared with the results obtained by the h-version of the FEM. A great number of physical processes and technology are described in terms of partial differential equations of the type g h(x, y, ~(2, y), VU@, y)) + ; b&, y, u(x, y), Vu@, y)) + bob Y, 4~ Y), Wx, Y)) = f(x, Y), (X,Y) E 0,. where Vu = (g, e). The functions bi (i = 0, 1,2) and the right-hand side f usually depend on the properties of the materials that form the device represented by the domain R. As a typical example, the stationary magnetic field in a plane domain R can be introduced. This problem is described by anequation of the form div (IVUI~-~VU) + f(u) = 0, in R,. This work was supported by the Hungarian National Research Foundations OTKA TO26138 and OTKA T031998. The first author was supported by the Bolyai Janos Research Grant.. 08981221/03/$ -see front matter @ 2003 Elsevier Science Ltd. All rights reserved. Typ=t by 44-W PII: SO8981221(03)00201-3 as 1 < q < 00. Problem (2) was studied, as well as its finite-element approximation, in [1, 2] . The type of equation (2) has been studied by Pelessier and Reynaud. They showed that the sliding glaciers can be described by the Euler-Lagrange equation (2) with f = 1 and q = 7/3 (see [3] ).. An eigenvalue problem corresponding to (2) can be formulated as follows: Another generalization of (1) is the quasilinear equation . s-l Bu and u, = g, uy = a;;. If q = 2 is substituted into (3) or (5), then both cases lead to the same linear problem Au+XU=O. The pversion of the finite-element method has been presented for the solutions of the two strongly nonlinear eigenvalue problems. The Newton-Raphson iteration is applied for the determination of the first eigenvalue and eigenfunction for problems A and B.. The results are compared with the solutions obtained by the h-version of the finite-element method. It is concluded that the pversion of FEM gives a higher rate of convergence than the h-version of FEM.. For greater values of q there are such subdomains of 52 where the partial derivatives show rapid changes. Therefore, the hp-version of the finite-element method is recommended in these cases.. Further investigation can be made to determine the higher eigenmodes.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


An efficient and generic reversible debugger using the virtual machine based approach The reverse execution of programs is a function where programs are executed backward in time. A reversible debugger is a debugger that provides such a functionality. In this paper, we propose a novel reversible debugger that enables reverse execution of programs written in the C language. Our approach takes the virtual machine based approach. In this approach, the target program is executed on a special virtual machine. Our contribution in this paper is two-fold. First, we propose an approach that can address problems of (1) compatibility and (2) efficiency that exist in previous works. By compatibility, we mean that previous debuggers are not generic, i.e., they support only a special language or special intermediate code. Second, our approach provides two execution modes: the native mode, where the debuggee is directly executed on a real CPU, and the virtual machine mode, where the debuggee is executed on a virtual machine. Currently, our debugger provides four types of trade-off settings (designated by unit and optimization) to consider trade-offs between granularity, accuracy, overhead and memory requirement. The user can choose the appropriate setting flexibly during debugging without finishing and restarting the debuggee. The reverse execution of programs is a function where programs are executed backward in time. In other words, it is a function that "undoes" effects of previously executed instructions, lines, and procedures. A reversible debugger is a debugger that provides such a functionality.. Reverse execution is very useful for locating the causes of software failures. In general, software does not fail immediately after the cause of the failure is executed. Instead, the software may fail some time after the cause of the failure has been executed. In such cases, a programmer may want to backtrack from the location where the failure occurred to the location where its cause exists. But most debuggers cannot perform reverse execution. If the programmer wants to investigate the state of the program at the location immediately before the failure occurs, he/she will need to restart the program and set a breakpoint at that location to stop it. If the programmer wants to go further back in the program, he/she will again need to restart the program. The programmer will need to repeat this tedious process until the cause of the failure is successfully located.. In this paper, we propose a novel reversible debugger that enables reverse execution of programs written in the C language. Our approach takes the virtual machine based approach [9, 12] . In this approach, the target program is executed on a special virtual machine, instead of directly on a real CPU. Our contribution in this paper is two-fold. First, we propose an approach that can address problems of (1) compatibility and (2) efficiency that exist in previous works using the virtual machine based approach. Second, our approach provides two execution modes: the native mode, where the debuggee is directly executed on a real CPU, and the virtual machine mode, where the debuggee is executed on a virtual machine 1 . In the rest of this paper, we first describe related work. Section 3 presents the design of our reversible debugger. Then, section 4 describes the implementation of our reversible debugger. Section 5 gives an evaluation, and finally section 6 makes concluding remarks. As mentioned above, we use native machine code as the target of our reversible debugger to assure compatibility. In addition, our reversible debugger can use debugging information in the target program's executable file. Debugging information includes mapping between native machine code and source code. This information can easily be generated with existing compilers by turning on the debugging option. Thus, we can say that our reversible debugger offers its functionalities at both the native machine code level and the source code level.. One novel characteristic of our reversible debugger is its two execution modes. In our debugger, the target program is executed directly on the real CPU when reverse execution is not needed ( Fig. 1 (i) ). So, the execution does not incur any overhead. We call this the native mode. The target program is executed on our virtual machine only when reverse execution is needed ( Fig. 1 (ii) ). We call this the VM mode. As mentioned above, our virtual machine employs dynamic translation to realize very fast execution.. Providing these two modes offers two significant advantages. First, even though our virtual machine employs dynamic translation, execution on our virtual machine always incurs some degree of overhead, even if no state saving is performed 2 . In such a case, this overhead is completely unnecessary. By offering the native mode, we can avoid such overhead and execute the target program at full speed when reverse execution is not needed. Second, the capability of switching between the native mode and the VM mode enables attaching and detaching of already running programs. This is because our debugger does not require the target program to be entirely executed on our virtual machine. Our debugger can attach to an already running program on a real CPU, enter native mode and then switch to VM mode, or vice versa. "Attach" and "Detach" are basic functionalities of conventional debuggers, and essential for debugging of multi-processing programs.. Native Mode In this mode, users cannot reverse execute the target program, and functionalities are limited to those provided by traditional source code level debuggers, such as those given in Table 1 (b) and (c). We proposed a novel reversible debugger using the virtual machine based approach. Our approach addressed the problems of (1) compatibility and (2) efficiency that existed in previous works. We used native machine code as the target of our reversible debugger and made use of dynamic translation. In addition, our approach provides two execution modes: the native mode and the VM mode. This is made possible by not destroying live registers or memory locations in our virtual machine and keeping them "in the clear" for the original execution.. Currently, our debugger provides four types of trade-off settings (designated by unit and optimization) to consider trade-offs between granularity, accuracy, overhead and memory requirement. The user can flexibly choose the appropriate setting during debugging while considering the trade-offs of the choices, without finishing and restarting the debuggee.. Future works include support of multi-threaded programs as mentioned in section 4.3. Behaviors of multi-threaded programs are much more complex than single-threaded programs. We believe that supporting multi-threaded programs in reversible debuggers can be a great help to programmers. There have been many attempts to realize reverse execution. The most common approach is to create a history log of changes to program states during execution [1, 3, 4, 6, 8, 9, 11, 12] . For example, the contents of memory are saved before the program tries to overwrite it. Reverse execution can then be realized by reconstructing the original memory contents using the saved information.. PROVIDE [12] is a visualization and debugging environment for a subset of the C Language. PROVIDE executes a program on its interpreter. The interpreter records state transitions to a process history database. Spyder [1] is a debugging tool for the C Language. Spyder uses a structuredbacktracking approach which identifies and saves a changeset of a statement. A change-set consists of all variables whose values are modified by a statement. ZStep94 [11] is a source code stepper for Lisp. ZStep94 uses a special interpreter, and keeps a history of evaluations. In addition, it maintains a consistent view of the user interface, and can backtrack graphical outputs. Chen et al. [6] proposed an approach based on instrumentation of assembly code. Their approach keeps all states that are changed by assembly instructions. Akgul et al. [3] also proposed an approach that enables assembly instruction level reverse execution. It distinguishes states that are reconstructable from other states. An inverse version of the program is generated to avoid saving reconstructable states. So, it can reduce storage requirements. This approach was improved by using dynamic slicing [4] . Cook [8] proposed a reversible debugger for Java. It exploits Kaffe's interpreter so that it can capture state changes caused by Java bytecode. It also supports multi-threading. Leonardo Virtual Machine (LVM) [9] is a portable virtual machine which has the function of reverse execution. It uses a transaction for a unit of reverse execution. The length of each transaction can be freely changed during execution. Executables for LVM can be produced by using the Leonardo C Compiler.. There are two main issues for approaches which create history logs: what kinds of execution states need to be saved, and how to save the execution states.. The former is a very difficult issue because there are tradeoffs between forward and reverse execution speed, memory requirement, granularity of a reverse execution unit, analysis cost, etc. For example, [9] showed that larger granularity can realize faster execution and smaller memory requirement. Another example would be the difference in the states that are saved in a loop in [1] and [6] . In [1] , only variables which could be modified during execution of an entire loop are saved before entering the loop. On the other hand, in [6] , every state changed by each instruction in the loop body are saved. So, [1] can achieve faster execution and smaller memory requirement. But it cannot backtrack each loop iteration. [6] is the exact opposite. It can backtrack each loop iteration or each instruction in the loop body, but it has higher overhead and needs larger memory. [3] showed that faster execution and smaller memory requirement can be achieved in exchange for possibly large analysis cost. Futhermore, [4] showed that faster reverse execution along dynamic slices can be achieved with extra analysis cost. From the above consideration, it is very important not to limit users to a particular trade-off setting. A reversible debugger should provide multiple types of trade-off settings to consider related trade-offs and be able to switch among them flexibly during debugging. But most of the above works do not have such a capability.. There are two software based approaches focusing on the latter issue, i.e. how to save execution states. One is the static instrumentation approach [6] and the other is the virtual machine based approach [8, 9, 11, 12] . In the static instrumentation approach, code is inserted to save states that are changed during execution. This insertion (or translation of the program) is done before the target program is started. In the virtual machine based approach, the target program is executed on a special virtual machine, instead of directly on a real CPU. The virtual machine is responsible for saving states that are changed during execution. As mentioned above, a reversible debugger should provide multiple types of trade-off settings and be able to switch among them. So, the virtual machine based approach is preferable rather than the static instrumentation approach. This is because the virtual machine based approach is much more flexible compared to the static instrumentation approach. In the static instrumentation approach, all translation occurs before the program starts. So, users need to consider tradeoffs before starting the program. If the user wants to make changes during execution, the user must finish the program, re-translate it, and restart it. This is a very tedious process. In contrast, the virtual machine based approach does not have such limitations. The behavior of a virtual machine (including settings for trade-offs) can be changed freely during execution. So, the virtual machine based approach can provide the above capability much more easily.. When we focus on reversible debuggers for the C language, PROVIDE [12] and LVM [9] are examples that take the virtual machine based approach. But they have two serious problems: (1) compatibility and (2) efficiency. Both works have a compatibility problem with existing development environments. PROVIDE [12] supports only a subset of the C language, PROVIDE-C. There are many limitations, e.g., only integers, characters and one-dimensional arrays are supported. On the other hand, LVM provides the Leonardo C Compiler, which supports the ISO C89 standards. But it is not sufficient because LVM uses special intermediate code, and libraries of existing development environments (native machine code) cannot be used without recompiling the libraries using the Leonardo C Compiler. In other words, the source code of the libraries are necessary. So, to use PROVIDE or LVM, developers may first need to port their programs and/or libraries to the environments. This greatly reduces the usefulness of these environments.. The other problem, efficiency, is caused by the interpretive execution in both PROVIDE and LVM. Generally, C programs are compiled to native machine code, and directly executed on a real CPU. So, the slowdown factors in these environments are very significant. In this section, we describe the implementation of our reversible debugger. We implemented our debugger for the Intel x86 architecture and Linux operating system. The debuggees need to be compiled with debugging information, e.g. with the -g option in GCC. 3 . In the following sections, we describe the implementation of our virtual machine and then our reversible debugger.

O O O O O B O O B I O O O B I O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O B O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B I O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O B