Relay-Assisted Partial Packet Recovery with IDMA Method in CDMA Wireless Network Abstract-Automatic Repeat Request (ARQ) is an effective technique for reliable transmission of packets in wireless networks. In ARQ, however, only a few erroneous bits in a packet will cause the entire packet to be discarded at the receiver. In this case, it's wasteful to retransmit the correct bit in the received packet. The partial packet recovery only retransmits the unreliable decoded bits in order to increase the throughput of network. In addition, the cooperative transmission based on Interleave-division multiple-access (IDMA) can obtain diversity gains with multiple relays with different locations for multiple sources simultaneously. By exploring the diversity from the channel between relay and destination, we propose a relay-assisted partial packet recovery in CDMA wireless network to improve the performance of throughput. In the proposed scheme, asynchronous IDMA iterative chip-by-chip multiuser detection is utilized as a method of multiple partial recovery, which can be a complementarity in a current CDMA network. The confidence values' concept is applied to detect unreliable decoded bits. According to the result of unreliable decoded bits' position, we use a recursive algorithm based on cost evaluation to decide a feedback strategy. Then the feedback request with minimum cost can be obtained. The simulation results show that the performance of throughput can be significantly improved with our scheme, compared with traditional ARQ scheme. The upper bound with our scheme is provided in our simulation. Moreover, we show how relays' location affects the performance. Currently, Direct-Sequence Code Division Multiple Access (DS-CDMA) wireless networks is widely deployed [1] , such as in IEEE 802.11b. At the link layer of such networks, the Automatic Repeat Request (ARQ) protocol is usually used to ensure the reliable delivery of packets with Cyclic Redundancy Check (CRC) to check whether the received packet has errors. If the error in the received packet is detected by CRC, the erroneous packet is discarded and retransmission is requested by the receiver. There are many possible causes for errors, such as a non-ideal state of channel between the transmitter and receiver, collision of packets in random access networks and so on. To address the packet collision problem, IEEE 802.11 wireless networks employ Carrier Sense Multiple Access(CSMA) and the Request-To-Send(RTS)/Clear-To-Send(CTS) mechanisms at the MAC layer [1] . However, retransmissions are not completely avoided because erroneous receptions still happen. Therefore, ARQ is employed to guarantee quality of service (QoS). ARQ with a limit on the maximum number of retransmissions, called truncated ARQ, is applied to reduce the delay and buffer size [2] . In truncated ARQ, if a packet still has errors after being retransmitted for the maximum number of times defined, the packet will be discarded and a packet loss is announced. The truncated ARQ can improve the packet error rate (PER), but it cannot This work is supported by US NSF CNS-0953377, CNS-0905556 and CNS-0910461.. achieve throughput gains. This is because more transmission time is required for better PER performance. Moreover, if the channel between source and destination is in a poor state, the performance of throughput cannot be improved with the increases in number of retransmissions.. Recently, a partial packet recovery scheme was proposed to improve the throughput performance in [3] . In the traditional ARQ scheme, the entire packet is retransmitted even though there may be only one error in the packet. The basic idea behind partial packet recovery is to retransmit only the erroneous bits if a received packet cannot pass the CRC. In the partial packet recovery scheme, the receiver knows probably error bits' position in the received packet with a unreliable decoded bits detection. The threshold method can be applied in the unreliable decoded bits detection. According to the results of unreliable decoded bits detection, the receiver feeds back a request message to the transmitter so that the transmitter is aware of which part of the packets needs retransmission. The size of request message feedback from the receiver to the transmitter is a key issue for the partial packet recovery. When the request message costs too many bits to feed back from the receiver, the throughput will decrease. A feedback strategy based on the cost evaluation is used to solve the feedback request issue.. Cooperative transmission techniques can provide diversity gains through relays in the fading wireless channel [4] , [5] , [6] . In [7] , a cooperative packet recovery scheme is proposed. It requires retransmission of the entire packet, and combines confidence information across multiple copies of a packet from multiple access points which are connected by wired Ethernet. In fact, this is equivalent to a multiple antenna receiver scheme without the assistance of relay. In [8] , the truncated cooperative ARQ scheme is proposed to obtain throughput gains by the relay-assisted method, where sources and relays use an orthogonal space-time block code (STBC) to retransmit the entire packets. However, this scheme requires close synchronization of the source and relays for STBC to work, and coordinating different transmitters in the wireless network can be difficult.. To overcome the synchronization challenge, Interleave-division multiple-access (IDMA) has the advantage that it works in an asynchronous cooperative communication network scenario [9] . IDMA provides a good interference cancellation performance. Moreover, the Multi-User Detection (MUD) in IDMA has a linear complexity, implying a lower cost than the MMSE-based MUD which has polynomial complexity in CDMA [10] , [11] , [12] . In [13] , a scenario is described where multiple source-destination pairs are assisted by multiple common relays based on IDMA. The work in [13] shows that IDMA relays at different locations provide different diversity gains for the multiple source-destination pairs. Fig. 1 . Relay-assisted partial packet recovery. The solid lines denote the data transmission between nodes, the dashed lines the feedback request from destination for retransmission. To assist S 1 and S 2 , R 1 and R 2 are the selected best relays to respond to the feedback request.. In this paper, we propose a relay-assisted partial packet recovery scheme. In our scheme, IDMA is applied as a partial packet recovery method. We not only bring diversity gains into the partial packet recovery with relays, but also take advantage of IDMA for recovering multiple erroneous packets. The proposed IDMA partial packet recovery can be used to recover the erroneous packet under the following scenario: a wireless network that is under heavy load may have to handle more than one corrupted packet at the same time slot. An example of this scenario is when CSMA and RTS/CTS fail to avoid the collision between two source packets. If both source packets are intending for the same destination, the receiver at the destination will be required to handle the partial packet recovery for more than one packet at the same time. Hence, more than one packets need to recover at the destination in the partial packet recovery scheme. To recover the multiple erroneous packets, the IDMA MUD may concurrently receive and separate all retransmitted partial packets from multiple relays for multiple source's packet. In addition, the asynchronous property of iterative chip-by-chip MUD mechanism in our proposed IDMA scheme enables the receiver to extract multiple partial packets of different sizes. Because the size of different retransmitted partial packets may be different in the case of multiple partial packets recovery. The simulation results show that the proposed scheme outperform the traditional ARQ. This paper is organized as follows: In Section II, we introduce the system model. In Section III, we present the proposed IDMA-based partial packet recovery scheme. Section IV, we show the simulation result. In Section V, we provide a conclusion to this paper.

O B I 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 B I I O O O O O O O O O O O O O O O O O B I 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 I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 I O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 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 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 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 B O O O O O O 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 O O O O O O O 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 I O O O O B O O O O B I I O O O O O O O O O B I I O O O O O O O B O O O O O O O B B I 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 B I I O O O O O O O O O O O O O O O O O O O O O O B I I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 I O O O O O O O O O O O O O O O O O O


Statistics for the dynamic analysis of scientometric data: the evolution of the sciences in terms of trajectories and regimes The gap in statistics between multi-variate and time-series analysis can be bridged by using entropy statistics and recent developments in multi-dimensional scaling. For explaining the evolution of the sciences as non-linear dynamics, the configurations among variables can be important in addition to the statistics of individual variables and trend lines. Animations enable us to combine multiple perspectives (based on configurations of variables) and to visualize path-dependencies in terms of trajectories and regimes. Path-dependent transitions and systems formation can be tested using entropy statistics. The sciences evolve as complex and non-linear systems. Such systems can be expected to contain recursive and interactive terms. Recursion means that the previous state of the system (at t -1) is potentially a main driver for its further development, and interactions can occur, for example, in university-industry-government relations among differently codified subsystems of communication (Leydesdorff and Zawdie 2010; cf. Luhmann 1995) . Within the sciences under study in scientometrics, specialties and disciplines can be considered as discursive subsystems with their own dynamics; interactions and translations can lead to ''interdisciplinarity'', ''transformative science'', and/or newly emerging developments (Leydesdorff et al. 1994) .. Complex systems of scientific communications can be expected to drive themselves towards the edge of chaos (e.g., Kauffman 1993; Prigogine and Stengers 1984) . In addition to large-scale crises and paradigm changes-which may be rare-one can expect smallerscale developments to reorganize the sciences continuously (Bak et al. 1987; cf. Bak and Chen 1991) . The sciences as volatile systems of rationalized expectations gain stability because of textual organization and archival aggregation, community formation and institutionalization. Scientists follow the research fronts reflexively and organize the expanding horizons of possibilities in historical contexts. Validated knowledge, for example, is more stable than knowledge claims in manuscripts.. In my opinion, multivariate analysis in scientometrics has hitherto focused mainly on static designs that may be of limited value when addressing questions about nonlinear developments. Significance testing and boot-strapping techniques, for example, have been developed using available software such as SPSS, SAS, Stata, or more recently also R. New programs of social network analysis and visualization have added new statistics such as centrality measures, and mechanisms such as preferential attachment have been theorized (Barabási and Albert 1999) . The specification of a mechanism, however, is based on a dynamic assumption (Price 1976) .. In general, evolutionary mechanisms cannot be observed directly-they are genotypical-but the phenotypical footprints of the mechanisms can be analyzed (Hodgson and Knudsen 2011; Luhmann 1990) . For example, the highly skewed distributions which prevail in the study of the sciences (Seglen 1992) can be considered as the result of strong (recursive) selections and possibly hyper-selection that operates on the variation. Using cross-lagged correlation analysis, Cook and Campbell (1979) ''quasi-experimented'' with systems containing two subdynamics (e.g., ''variation'' and ''selection'') . Most of the curve-fitting and extrapolation in time-series analysis, however, focuses on single variables. Interactions among evolving subsystems cannot be tested using ARIMA (Autoregressive Integrated Moving Averages) or similar such models in SPSS. 1 Many researchers reduce dynamic problems to comparatively static ones. One measures in a specific year and similarly in the next year, and then one assumes that the difference can be considered as ''the evolution'' of the system under study. For example, publication and/or citation rates for different countries are plotted against time, and then one can assess whether the ''USA is losing ground in science'' or ''China is emerging'' with a linear or exponential dynamics by curve-fitting the individual trendlines. However, this does not tell us much about the dynamics of the publication system; it teaches us something about the relative contributions of subsystems to the system. A (so-called Markov) systemic assumption could, for example, be that the present state of the system is the best prediction of its next state. Deviations at t ? 1 from this present state (t) can perhaps be tested for their significance.

O O O B O O O O O B O O O O O O B 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 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Free-form motion processing Motion is the center of attention in many applications of computer graphics. Skeletal motion for articulated characters can be processed and altered in a variety of ways to increase the versatility of each motion clip. However, analogous techniques have not yet been developed for free-form deforming surfaces like cloth and faces. Given the time-consuming nature of producing each free-form motion clip, the ability to alter and reuse free-form motion would be very desirable. We present a novel method for processing free-form motion that opens up a broad range of possible motion alterations including motion blending, keyframe insertion, and temporal signal processing. Our method is based on a simple yet powerful differential surface representation that is invariant under rotation and translation and which is well suited for surface editing in both space and time. Animators currently have at their disposal a wealth of techniques for editing and processing the motion of articulated characters. Characters can be easily reposed and their motion warped to interpolate the desired keyframe. Motion clips can be blended together to produce composite motions, and skeleton parameters can be manipulated to enhance or suppress features of the motion. Because generating original motion can be very expensive and time consuming, these motion-processing techniques, and others like them, are essential production tools.. Our goal is to make similarly powerful processing of free-form motion possible. Such motions can be free-form in both space and time: the object may be described by an arbitrary unstructured triangle mesh, and, in each frame, every vertex may have an arbitrary position. Datasets of this kind are typical of several common motion sources including physical simulations of nonrigid objects (e.g., cloth) and direct high-resolution motion capture of surfaces (e.g., faces).. The foundation of our motion-processing framework is a new differential mesh representation where the position and orientation of each vertex and face is expressed relative to those of its neighbors. Because our representation is constructed from relative transformations of triangles rather than using the conventional vertex-based Authors' addresses: email: kircher@engineering.uiuc.edu, mgarland@nvidia.com Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or direct commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works requires prior specific permission and/or a fee. Permissions may be requested from Publications Dept., ACM, Inc., 2 Penn Plaza, Suite 701, New York, NY 10121-0701 USA, fax +1 (212) 869-0481, or permissions@acm.org. c 2008 ACM 0730-0301/2008 /04-ART12 $5.00 DOI 10.1145 /1356682.1356685 http://doi.acm.org/10.1145 approach, it avoids the need to invent vertex tangent planes that lie outside the surface. This leads to a simpler formulation and allows us to accommodate any triangulated model including nonmanifold and nonorientable surfaces with no additional effort. Existing vertex-based approaches would require at least careful formulation of special cases for nonmanifold regions.. Our differential representation provides the basis for both spatial geometry processing and temporal motion processing. We use it to provide a keyframe editor but other geometric operations such as smoothing are also possible.. More importantly, we show how this differential representation can be used to provide a collection of powerful motion-processing tools. Given one or more keyframes, we can insert them into a motion clip, warping the motion to smoothly interpolate them. We also derive techniques for blending clips together and for performing temporal signal processing on the motion itself, both of which are clearly superior to linear blending, based on vertex positions (See Figure 1) We have described a new approach to free-form motion processing that provides much greater power and flexibility than existing methods [Kircher and Garland 2006; Xu et al. 2007; Sumner et al. 2007] . To demonstrate its flexibility, we have shown that it makes motion blending, keyframe insertion, temporal signal processing, and motion transfer possible. Using the tools we have developed here, an artist can alter and combine existing deforming surface animations without having to resimulate or recapture them, thus speeding the iterative design cycle. Our framework also provides a conceptual basis for developing further motion-processing tools. Our motionprocessing framework is based on a simple differential surface representation that is invariant under rotation and translation, does not fabricate tangent planes outside the surface itself, and which is capable of handling both nonmanifold and nonorientable surfaces with ease.. There are a number of interesting ways in which this work could be extended. We have explored only a small sample of the possible motion-processing tools that could be built upon our framework; there are certainly others worthy of attention. We have also made the convenient simplifying assumption that the mesh connectivity is fixed throughout time. This assumption could be relaxed by constructing interframe correspondences and providing appropriately generalized blending operators. We believe that good results can almost certainly be achieved without the need for bijective correspondences, using techniques like those proposed by Sumner and Popović [2004] . Also, since our system treats rotational and translation constraints separately, artifacts can occur from inappropriate use of constraints (i.e., attempting to use translational constraints to induce a rotation). It may be possible, and would be highly beneficial, to find a way to infer rotational constraints from a set of positional constraints. Finally, GPUs are currently powerful enough to support runtime solution of our least-squares systems for modestlysized meshes, indicating that our approach could potentially be used for online motion blending. Providing powerful tools for processing free-form motion where an unstructured triangle mesh is allowed to move in an arbitrary manner is a largely unaddressed problem. Our prior work [Kircher and 12:2 • S. Kircher and M. Garland Fig. 1. We develop powerful tools for manipulating free-form deforming surface, like this simulated cloth (top). Here the user has applied fold mollification to fix simulation errors and inserted 4 keyframes to provide a more dramatic effect. Our system has automatically warped the motion to smoothly interpolate these constraints (bottom).. Garland 2006] was the first to consider this problem. In that work, we developed a method for transporting multiresolution geometry edits made in one frame to all other frames in a temporally coherent manner. Although this provides several useful editing tools, it is rather limited in scope and cannot perform rotational edits. The approach we propose here essentially subsumes the functionality our previous method provides, while providing much more powerful tools including keyframe insertion, temporal signal processing, and motion blending.. Like our proposed system, the method presented by Xu et al. [2007] also uses a differential representation for editing deforming surfaces which they developed concurrently with our own work. Unlike our representation, however, theirs is still vertex-based and thus requires the construction of local tangent planes. Also, our method for interpolating between keyframes can be used with any method for specifying those keyframes, whereas their's cannot. Sumner et al. [2007] also present a deforming surface-editing method developed concurrently with our work. Their method deforms space rather than only the surface of a mesh, and so it can be used with other types of animations such as particle simulations. However, it is more difficult to make detailed edits with their coarsegraph structure. Furthermore, general motion-processing operations such as blending and signal processing are not supported by their method.. In contrast to the general absence of methods for free-form motion processing, a broad spectrum of techniques have been developed to support the editing and processing of articulated motion. Direct manipulation of the skeleton for generating keyframes is usually performed via inverse kinematics or similar constraint-based methods [Gleicher 2001 ]. Motion warping [Witkin and Popović 1995] , motion signal processing [Bruderlin and Williams 1995] , and motion blending [Lamouret and van de Panne 1996; Kovar et al. 2002] are only a few examples of the kind of motion processing that can be done by algebraically manipulating the skeleton parameters. James and Twigg [2005] showed how to fit a set of nonrigid bones to a deforming surface. For surfaces undergoing nearly articulated motion, this technique could be used to extend traditional skeletal motion-processing techniques to a more general setting. Indeed, they demonstrate that their system can be used to perform simple edits of the animation. However, this approach does not generalize to our setting where surfaces are allowed to deform in an arbitrary fashion. MESHIK [Sumner et al. 2005 ] is another system that aims to map traditional articulated motion techniques onto unstructured surfaces. It provides an inverse kinematics engine for unstructured meshes where the kinematic behavior of the surface is automatically inferred from a set of example poses. This would be an appealing interface for creating keyframes that can be used in a system such as ours.. There are also many approaches available for editing and processing geometry represented by unstructured triangle meshes. Our work is inspired by recent developments in differential representations [Sorkine 2006 ] which represent local shape information in relative coordinate systems. The main challenge with such methods is to make the differential representation invariant under global transformations of the surface. Sorkine et al. [2004] use a formulation based on the Laplace equation, they use a local linear approximation of rotations to ameliorate artifacts caused by rotational edits. The formulation used by Yu et al. [2004] is based on the more general Poisson equation, and they attempt to deal with rotations by explicitly propagating handle transformations to alter the coordinate gradient fields before reconstructing. Sheffer and Kraevoy [2004] developed the first rotationally invariant representation; however, their reconstruction process is nonlinear and so relatively expensive. Lipman et al. [2005] developed a rotationally invariant representation whose reconstruction process is linear. Our approach continues developments in this area by providing a rotation-invariant representation with a linear reconstruction process that is simple to state and implement and that can easily handle nonmanifolds and nonorientable surfaces. Our representation is especially well suited to free-form motion processing. In particular, we do not orthonormalize our local frames and can thereby easily capture the local stretch/skew motion of the surface.

O O O O O O O O O O O O O O O O O O O O O O O O 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 B I 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 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 B I 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 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 B I I O B 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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


Fast Surface Segmentation Guided by User Input Using Implicit Extension of Minimal Paths Abstract. We introduce a novel implicit approach for single object segmentation in 3D images. The boundary surface of this object is assumed to contain two or more known curves (the constraining curves), given by an expert. The aim of our method is to find the desired surface by exploiting the information given in the supplied curves as much as possible. We use a cost potential which penalizes image regions of low interest (for example areas of low gradient). In order to avoid local minima, we introduce a new partial differential equation and use its solution for segmentation. We show that the zero level set of this solution contains the constraining curves as well as a set of paths joining them. These paths globally minimize an energy which is defined from the cost potential. Our approach, although conceptually different, can be seen as an implicit extension to 3D of the minimal path framework already known for 2D image segmentation. As for this previous approach, and unlike other variational methods, our method is not prone to local minima traps of the energy. We present a fast implementation which has been successfully applied to 3D medical and synthetic images. The common use of deformable models, introduced by Kass et al. [18] , in 2D and 3D image segmentation consists of introducing an initial object in the image and deforming it until it reaches a desired target. Generally, the evolution of the object is chosen in order to most rapidly reduce an energy involving the image data until a steady state is reached. One of the main drawbacks of this approach is that it suffers from local minima 'traps'. This is the case when the steady state reached by the active object does not correspond to the target but to another local minimum of the energy. As a consequence, the active object's initialization is of crucial importance: the final result depends strongly upon it. In this paper we have presented a method that generalizes globally minimal paths for curve segmentation in 2D to surface segmentation in 3D. Our model is initialized by two or more user-supplied curves which we maximally exploit, partly by the fact that the surface we generate is constrained to contain them. We have developed a novel implicit approach that, through a linear partial differential equation, exploits the solution to the Eikonal equation and generates a function whose zero level set is only composed of minimal paths. Hence, our approach is not prone to local minima traps as are other active surface approaches. It is especially well suited for medical image segmentation, in particular for ultrasound image segmentation. In cases where the image quality is very poor, our approach handles the introduction of additional information coming from the practitioner in a very natural manner: a few 2D segmentations can be enough to generate a coherent, complete surface. is defined as the set of minimal paths between the points of curve 1 and 2 , symmetrical to 9. 5. Recall that for any curve , we refer by U to the (viscosity) solution of the Eikonal equation: ∇U = P, and∀q ∈ , U ( p) = 0. 6. If p belongs to R 12 the proof is identical by interchanging 1 and 2.

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 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 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 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 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 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


An

algorithm

for

the

complete

solution

of

quadratic

eigenvalue

problems

We

develop

a

new

algorithm

for

the

computation

of

all

the

eigenvalues

and

optionally

the

right

and

left

eigenvectors

of

dense

quadratic

matrix

polynomials.

It

incorporates

scaling

of

the

problem

parameters

prior

to

the

computation

of

eigenvalues,

a

choice

of

linearization

with

favorable

conditioning

and

backward

stability

properties,

and

a

preprocessing

step

that

reveals

and

deflates

the

zero

and

infinite

eigenvalues

contributed

by

singular

leading

and

trailing

matrix

coefficients.

The

algorithm

is

backward-stable

for

quadratics

that

are

not

too

heavily

damped.

Numerical

experiments

show

that

our

MATLAB

implementation

of

the

algorithm,

quadeig,

outperforms

the

MATLAB

function

polyeig

in

terms

of

both

stability

and

efficiency.

Based

on

the

analysis

in

Section

and

remarks

in

Section

the

default

in

our

implementation

is

to

apply

the

Fan,

Lin,

and

Van

Dooren

scaling

to

the

quadratic

Q(λ)

prior

to

building

the

second

companion

linearization

C

(λ)

when

τ

Q

and

not

to

scale

otherwise.

The

tropical

scaling

is

also

implemented,

but

is

left

as

an

option.

We

refer

to

Experiment

in

Section

for

numerical

illustrations

of

these

eigenvalue

parameter

scalings.

We

have

described

a

new

algorithm

for

the

computation

of

all

the

eigenvalues

and

optionally

the

right

and

left

eigenvectors

of

dense

quadratic

matrix

polynomials.

Our

algorithm

incorporates

the

scaling

of

Fan,

Lin,

and

Van

Dooren

for

problems

that

are

not

too

heavily

damped;

a

choice

of

linearization

with

favorable

conditioning

and

backward

stability

properties;

and

a

preprocessing

step

that

reveals

and

deflates

the

zero

and

infinite

eigenvalues

contributed

by

singular

leading

and

trailing

matrix

coefficients..

The

algorithm

is

backward-stable

for

quadratics

that

are

not

too

heavily

damped.

We

note

that

QEPs

in

applications

are

often

not

heavily

damped.

For

heavily

damped

problems,

our

algorithm

offers

the

option

of

using

an

eigenvalue

parameter

scaling

based

on

tropical

roots,

for

which

we

can

show

that

the

smallest

tropical

root

leads

to

small

backward

errors

for

eigenvalues

small

in

absolute

value,

and

the

largest

tropical

root

leads

to

small

backward

errors

for

the

largest

eigenvalues

in

absolute

value..

Numerical

experiments

show

that

our

MATLAB

implementation

of

the

algorithm,

quadeig,

outperforms

the

MATLAB

function

polyeig

in

terms

of

both

stability

and

efficiency.

The

MATLAB

function

quadeig

is

available

from

the

Web

page

and

a

FORTRAN

implementation

is

under

development.

The

main

steps

of

our

quadratic

eigensolver

are

presented

in

Algorithm

They

consist

of

two

preprocessing

steps:

an

eigenvalue

parameter

scaling

and

a

deflation

of

the

zero

and

infinite

eigenvalues

contributed

by

singular

leading

and

trailing

matrix

coefficients,

as

described

in

Sections

and

These

preprocessing

steps

are

followed

by

the

computation

of

the

eigenvalues

with

the

QZ

algorithm.

The

eigenvector

computation

described

in

Section

is

optional,

as

are

the

computation

of

the

eigenvalue

condition

numbers

and

backward

errors

of

approximate

eigenpairs.

O O O O O O O O O O O O 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 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 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 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 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 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 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 B O O O O O O O O O O O O O O O O O O O O O O


The influence of student characteristics on the use of adaptive e-learning material Adaptive e-learning materials can help teachers to educate heterogeneous student groups. This study provides empirical data about the way academic students differ in their learning when using adaptive elearning materials. Ninety-four students participated in the study. We determined characteristics in a heterogeneous student group by collecting demographic data and measuring motivation and prior knowledge. We also measured the learning paths students followed and learning strategies they used when working with adaptive e-learning material in a molecular biology course. We then combined these data to study if and how student characteristics relate to the learning paths and strategies they used. We observed that students did follow different learning paths. Gender did not have an effect, but (mainly Dutch) BSc students differed from (international) MSc students in the intrinsic motivation they had and the learning paths and strategies they followed when using the adaptive e-learning material. The variety in prior knowledge within student groups has increased since the Bachelor/Master system was introduced at European universities in order to increase student mobility within the EU. Students enrolling in Master's programmes come from different universities and their knowledge on specific topics varies. These varying backgrounds mean that university staff must provide the students with intensive tutoring. Time-consuming tutoring can be supported by adaptive e-learning material. Adaptive e-learning is suitable for teaching heterogeneous student populations in higher education (Schiaffino, Garcia, & Amandi, 2008) , as it addresses the variety in the prior knowledge of students who enrol in a course. This gives students the opportunity to follow individual learning paths and meet their specific training needs (Brusilovsky, Eklund, & Schwarz, 1998) .. Although several studies report on the benefits of adaptive e-learning (see for example Armani, 2005; Melis et al., 2001; Virvou & Tsiriga, 2001) , there is little to no empirical evidence that students do follow individual learning paths associated with their differences in prior knowledge. It is also unknown whether other student characteristics such as gender or intrinsic motivation influence their learning paths. Since the development costs of computer-based learning environments (CBLEs) are high, it is important to know under what circumstances and for which student groups adaptive e-learning is effective. This study provides empirical evidence to support educators' decisions. As such, it links up with questions raised by, for instance, Narciss, Proske, and Koerndle (2007) at the end of their manuscript: 'To date there has been little research into how individual differences in problem-solving strategies and styles, students' goals and motivational orientations and students' meta-cognitive skills contribute to differences in studying in web-based learning environments. . An. issue for future research and practice is the question how individual variables may determine the way students learn with web-based learning environments '. (p. 1141) In addition to these practical aims, research into computer-based learning can provide more insight into the ways students self-regulate their learning. As Winne (2010) has pointed out: 'widespread use of CBLEs is vital to significantly accelerating the science of learning, particularly regarding self-regulated learning (SRL), and applying its findings in education. ' (p.267) Azevedo, Moos, Johnson, and Chauncey (2010) claim that learning in hypermedia environments involves the use of numerous self-regulatory processes, such as planning, knowledge activation, metacognitive monitoring and regulation, and reflection. We think that this claim can be extended to other CBLEs and that adaptive e-learning material is a good tool to investigate SRL. This study therefore paid special attention to the SRL strategies that students adopt when using adaptive e-learning material. The aim of this study was to investigate whether students follow different learning paths when using adaptive e-learning, and whether learning paths and strategies relate to student characteristics. The results show that students do indeed follow individual learning paths. They need a varying number of exercises to finish the task; the number is determined mainly by the step size they select to master the set learning objectives. As answer to the first research question, we therefore state that the adaptivity of the system works and that the option to choose step sizes is an essential factor in the system's adaptivity. In addition, students who chose bigger steps needed less time, indicating that students were well able to predict their own capacities.. The findings of this study indicate that some student characteristics are related to their learning paths. Gender and prior knowledge did not have an effect. BSc students needed less exercises and less time to finish than MSc students. This difference relates to the observation that BSc students chose bigger steps than MSc students. These findings are likely caused by the different compositions of the BSc and MSc student groups. Most of the BSc students were Dutch (90%) while the MSc students represented a large variety of nationalities with only 22% Dutch. This means that the nationality of students confounds with the study level and that more research is needed to attribute the reported differences between BSc and MSc students to the correct characteristics. Intrinsic motivation unexpectedly had a bigger influence on the learning path than students' prior knowledge. This can be explained by the desire of highly intrinsically motivated students to really understand the subject: they chose small steps in order to get more practice. These highly motivated students then need more time but also fewer tries to complete the exercises with the small steps, which is expected because they do not have less prior knowledge. Thus, the answer to the second research question is that intrinsic motivation has an influence on students' learning paths, and this is caused by the average step sizes they choose. We also investigated the relation between student characteristics and the strategies they used when working with the adaptive elearning material. The gender of students did not affect their learning strategies. Men and women did not differ in their intrinsic motivation, which is in line with the results from the study by Shashaani and Khalili (2001) . Students who had a higher level of prior knowledge less often discussed with their fellow students to find the correct answer and chose the step size more consciously. The relation between prior knowledge and self-regulated learning is in line with the recent study from Greene, Costa, Robertson, Pan, and Deekens (2010) . Compared to BSc students, MSc students more often studied relevant theory before doing an exercise, guessed at first and then used the feedback to find the correct answer, and asked the teacher to explain the exercise. Students with higher intrinsic motivation chose the step size more consciously and used the information sources more. The effect size of these relations was not very high. Thus, the answer to the third research question is that although intrinsic motivation, study level and prior knowledge do relate to the strategies that students adopt, these relations are not very strong.. This study presents insights into the ways students use adaptive e-learning. However, some limitations should be mentioned. An important one concerns the content of the adaptive e-learning material that was used in this study. Students could achieve the learning objective by completing only one exercise or a small number of them. The students who finished with very few exercises found it hard to complete the questionnaire, since they could not use many different learning strategies. In this study, 13 students needed three exercises or less to finish. As mentioned in the introduction, cultural background may have an influence on the learning strategies that students adopt. The students in this study differed in their cultural backgrounds: they came from the Netherlands, China, Ecuador, Ethiopia, Germany, Greece, Indonesia, Iran, Italy, Malaysia, Nepal and Vietnam. The variety in cultures was so great and student numbers per culture so small that it was not possible to compare groups with similar characteristics. The cultural background was therefore not taken into account in this study.. This study contributes to the educational research on SRL with CBLEs. We support the importance of using traces with CBLEs to gain more information about student SRL. Because adaptive e-learning gives the student some control, self-regulated learning strategies can well be studied. This study explored the possible influence of student characteristics on their learning paths and learning strategies, and investigated some strategies that can be seen as self-regulated learning. Our study contributes to the spectrum of available literature on the influence of student characteristics for elementary schools (Park, Lee, & Kim, 2009 ) and secondary schools (Lowrie & Jorgensen, 2011) by providing empirical data for tertiary level.. For further research, we suggest using existing models (Pintrich, 2003) to describe SRL in order to obtain better identification of the selfregulated learning strategies. The adaptive e-learning system that was used to create the adaptive e-learning material in this study has also been used to create learning material for other courses. Thus, some students may have already been familiar with this type of adaptive elearning material. It has been reported that novices interact differently with e-learning material than more experienced students (Winne, 1995) . Unfortunately, we did not collect data in our study about the experience of students with this type of adaptive e-learning material. It is interesting to measure the experience students already have with the specific learning environment, e.g. by adding an item to the questionnaire, and relate this characteristic to the learning path followed and strategies used.. This study provides empirical data to support the hypothesis that adaptive e-learning material provides personalized instruction to heterogeneous groups of students. We therefore recommend teachers to consider using adaptive e-learning material when faced with a heterogeneous student group, especially if it is a mixed group of BSc and international MSc students. Table 6 Spearman correlation coefficients for prior knowledge and intrinsic motivation and self-report items on three learning strategies.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


On sets of vectors of a finite vector space in which every subset of basis size is a basis II This article contains a proof of the MDS conjecture for $k \leq 2p-2$. That is, that if $S$ is a set of vectors of ${\mathbb F}_q^k$ in which every subset of $S$ of size $k$ is a basis, where $q=p^h$, $p$ is prime and $q$ is not and $k \leq 2p-2$, then $|S| \leq q+1$. It also contains a short proof of the same fact for $k\leq p$, for all $q$. Let S be a set of vectors of F k q in which every subset of size k is a basis. In 1952, Bush [2] showed that if k ≥ q then |S| ≤ k + 1 and the bound is attained if and only if S is equivalent to {e 1 , . . . , e k , e 1 + . . . + e k }, where {e 1 , . . . , e k } is a basis.. The main conjecture for maximum distance separable codes (the MDS conjecture), proposed (as a question) by Segre [9] in 1955 is the following. CONJECTURE 1.1. A set S of vectors of the vector space F k q , with the property that every subset of S of size k ≤ q is a basis, has size at most q + 1, unless q is even and k = 3 or k = q − 1, in which case it has size at most q + 2.. In this article we shall prove the conjecture for all k ≤ 2p − 2, where q = p h , p is prime and q is not prime. We shall also prove the conjecture for q prime, which was first proven in [1] . It may help the reader to look at the first four sections of [1] , although this article is self-contained (with the exception of the proof of Lemma 2.1) and can be read independently. The proof here is based on the ideas of [1] which themselves are based on the initial idea of Segre in [8] .. For a complete list of when the conjecture is known to hold for q non-prime, see [4] and also [5] .. The best known bounds, up to first-order of magnitude (c i are constants), are that for q an odd non-square, the conjecture holds for k < √ pq/4 + c 1 p, Voloch [11] . For q = p 2h , where p ≥ 5 is a prime, the conjecture holds for k ≤ √ q/2 + c 2 , Hirschfeld and Korchmáros [3] , and here we shall prove the conjecture for k ≤ 2 √ q + c 3 in the case q = p 2 . The conjecture is known to hold for all q ≤ 27 and for all k ≤ 5 and k = 6 with some exceptions. Conjecture 1.1 has implications for various problems in combinatorics, most notably for maximum distance separable codes (whence the name) from coding theory and the uniform matroid from matroid theory.. A linear maximum distance separable code is a linear code of length n, dimension k and minimum distance d over F q , for which d = n − k + 1. Conjecture 1.1 implies that a linear maximum distance separable code has length n at most q + 1 unless q is even and k = 3 or k = q − 1, in which case it has length at most q + 2. For more details on codes and MDS codes in particular, see [6] .. A matroid M = (E, F ) is a pair in which E is a set and F is a set of subsets of E, called independent sets, such that (1) every subset of an independent set is an independent subset; and (2) for all A ⊆ E, all maximal independent subsets of A have the same cardinality, called the rank of A and denoted r(A). The maximal independent sets of the uniform matroid of rank r are all the r element subsets of the set E. Conjecture 1.1 implies that the uniform matroid of rank r, with |E| ≥ r + 2, is representable over F q if and only if |E| ≤ q + 1, unless q is even and r = 3 or r = q − 1, in which case it is if and only if |E| ≤ q + 2. For more details on matroids and representations of matroids in particular, see [7] .

O O O 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 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


Method-level phase behavior in java workloads Java workloads are becoming more and more prominent on various computing devices. Understanding the behavior of a Java workload which includes the interaction between the application and the virtual machine (VM), is thus of primary importance during performance analysis and optimization. Moreover, as contemporary software projects are increasing in complexity, automatic performance analysis techniques are indispensable. This paper proposes an off-line methodlevel phase analysis approach for Java workloads that consists of three steps. In the first step, the execution time is computed for each method invocation. Using an off-line tool, we subsequently analyze the dynamic call graph (that is annotated with the method invocations' execution times) to identify method-level phases. Finally, we measure performance characteristics for each of the selected phases. This is done using hardware performance monitors. As such, our approach allows for linking microprocessor-level information at the individual methods in the Java application's source code. This is extremely interesting information during performance analysis and optimization as programmers can use this information to optimize their code. We evaluate our approach in the Jikes RVM on an IA-32 platform using the SPECjvm98 and SPECjbb2000 benchmarks. This is done according to a number of important criteria: the overhead during profiling, the variability within and between the phases, its applicability in Java workload characterization (measuring performance characteristics of the various VM components) and application bottleneck identification. The execution of a Java application involves a complex interaction between the Java code and the virtual machine (VM). Consequently the behavior that is observed at the micro-architectural level when executing Java workloads is not just a function of the application or the VM, but of the interaction between both. In addition to that, the applications themselves are growing in size and complexity and VM's are complex as well consisting of a number of subcomponents to drive the managed run-time system, such as the interpreter, compiler, optimizer, garbage collector, class loader, finalizer, thread scheduler, etc. As a result of that, understanding the behavior of a Java workload is non-trivial which increases the demand for automatic approaches to analyze Java workload behavior.. The purpose of this paper is to study method-level phase behavior in Java workloads. The notion of a phase is defined as a set of parts of the program execution with similar behavior which do not necessarily need to be temporally adjacent. The underlying assumption of method-level phase behavior is that phases of execution correspond to the code that gets executed. In particular, different methods are likely to result in dissimilar behavior and different invocations of the same method are likely to result in similar behavior. There has been some work in the literature that studies whether methods are of an appropriate granularity to detect program phase behavior [6, 17, 20] . Those studies did show that the method level is at least as good as lower levels (basic block level and loop level) especially for applications with lots of method calls in which each method is quite small [20] . And this is the case for object-oriented workloads, such as Java [24] . In other words, the granularity of method-level phases is course-grained enough to identify major phases, and at the same time is fine-grained enough to provide sufficient detail.. Our method-level phase behavior analysis is an off-line analysis that consists of three steps. In a first step, we determine how much time the Java workload spends in different portions or methods of the application. This is done by instrumenting all methods to read microprocessor performance counter values to track the amount of time that is spent in each method. The result of this first step is an annotated dynamic call graph. Using an offline analysis (step 2) we then determine the methods in which the application component subcomponent description memory hierarchy L1 I-cache 64KB two-way set-associative, 64-byte lines, LRU replacement with next line prefetching L1 D-cache 64KB two-way set-associative, 8 banks with 8-byte lines, LRU write-allocate, write-back, two access ports 64 bits each L2 cache 256KB 16-way set-associative, unified, on-chip, exclusive L1 I-TLB 24 entries, fully associative L2 I-TLB 256 entries, four-way set-associative L1 D-TLB 32 entries, fully associative L2 D-TLB 256 entries, four-way set-associative branch prediction BTB branch target buffer, two-way set-associative, 2048 entries RAS return address stack, 12 entries taken/not-taken gshare 2048-entry branch predictor with 2-bit counters system design bus 266MHz, 2.1GiB per second pipeline stages integer 10 cycles floating-point 15 cycles integer pipeline pipeline 1 integer execution unit and address generation unit also allows integer multiply pipeline 2 integer execution unit and address generation unit pipeline 3 idem floating-point pipeline pipeline 1 3DNow! add, MMX ALU/shifter and floating-point add pipeline 2 3DNow!/MMX multiply/reciprocate, MMX ALU and floating-point multiply/divide/square root pipeline 3 floating-point constant loads and stores spends a significant portion of its total execution time with the additional constraint that one invocation of the method takes a significant portion of the total execution time as well. This is to avoid selecting methods that are too small. During a second run of the application (step 3), these selected methods are instrumented and performance characteristics are measured. Measuring these performance characteristics is done using the hardware performance counters. In this step, we measure a number of characteristics such as branch misprediction rate, cache miss rate, number of retired instructions per cycle, etc. As such, we obtain detailed performance characteristics for the major method-level execution phases of the Java application. In addition to the methodlevel phases, we also measure performance characteristics for major parts of the VM, such as the compiler/optimizer, the garbage collector, the class loader, the finalizer, etc. There are several interesting applications for this work. First, for application programmers it is important to understand the behavior of the Java workload in all its complexity in order to optimize its performance. Using automatic techniques to characterize Java workloads can be helpful to identify performance bottlenecks with limited effort. Second, for VM developers, automatic workload characterization helps to get insight in how a Java application interacts with its VM, which allows improving the performance of the VM under development. Third, our approach also provides interesting insights into phase behavior. Detecting program execution phases and exploiting them has received increased attention in recent literature. Various authors have proposed ways of exploiting phase behavior. One example is to adapt the available hardware resources to reduce energy consumption while sustaining the same performance [6, 10, 26, 17] . Another example is to use phase information to guide simulation-driven processor design [25] . The idea is to select one single sample from each phase for simulation instead of the complete benchmark execution. On the software side, JIT compilers in VM's [3, 4] and dynamic optimization frameworks [5, 22] heavily rely on implicit phase behavior to optimize code. Fourth, in future work we plan to build a performance model to estimate Java performance. In such a model, performance models of different Java components need to be combined to form an overall performance model of the Java application. We believe that the granularity of method-level phases that are identified in this paper will be the right choice for this purpose. This paper is organized as follows. The next section details on our experimental setup. Section 3 discusses our offline approach for identifying method-level phase behavior. Section 4 discusses the statistical data analysis techniques that we have used to quantify the variability between and within phases. The results of our phase analysis are presented in section 5. Section 6 discusses related work. Finally, we conclude in section 7. Java workloads are complex pieces of software in which the Java application closely interacts with the VM. In addition, the applications themselves are becoming increasingly complex due to the ever-increasing processing power of current microprocessor systems. Because of this, automatic tools for characterizing such software systems are becoming paramount during performance analysis.. The purpose of this paper was to study method-level phase behavior of Java applications. In other words, our goal was to identify methods (including their callees) that exhibit similar behavior within the phase and dissimilar behavior between the phases. The phase analysis framework presented in this paper consists of three steps. In the first step, we measure the execution time for each method invocation using hardware performance monitors which are made available through the Jikes RVM HPM API. The second step analyzes this information using an off-line tool and selects a number of phases. These phases are subsequently characterized in the third step using performance counters. This characterization includes measuring a number of microprocessor events such as cache miss rates, TLB miss rates, branch misprediction rates, etc. for each selected phase.. Using this framework, we investigated the phase behavior of both the SPECjvm98 and SPECjbb2000 benchmark suite. In a first set of experiments, we have compared the characteristics of the Java application versus the various VM components. We concluded that Java workloads spend a significant portion of their total execution time (up to 46%) in the VM, more specifically in the garbage collector. In addition, the VM exhibits a significantly different behavior from the Java application, and this can vary widely over different applications. In a second set of experiments, we have focused on the method-level phase behavior of the Java application itself. We have shown that our phase analysis technique is capable of reliably discriminating methodlevel phases since a larger variability is observed between the phases than within the phases. We have also shown that the overhead incurred during profiling is small.. Particularly novel compared to existing work is the fact that our framework can link the microprocessor-level information to the methods in the Java application's source code. This provides a way for programmers to identify performance bottlenecks automatically which can guide them while optimizing their software.. In future work we will extend the ideas presented in this paper as several future research directions open up. First, we will explore on-line phase identification. Detecting and selecting phases at run-time is interesting for program analysis because we could eliminate the required training run. A second future direction is the development of a framework capable of both visualizing and replaying the profile information captured by our tool. Such a framework could result in new contributions that help gain deep understanding of program behavior of Java applications. A third possible direction is to develop techniques that are capable of exploiting the collected phase information. The insights obtained in this paper can be beneficial for VM, garbage collector and compiler optimizations. Furthermore, the information could lend itself to predict the behavior of Java applications based on the method-level phase behavior. The first subsection details on related work done on characterizing Java workloads. In the second subsection, we discuss phase classification and detection techniques. In this section we discuss the experimental setup: our hardware platform, the use of performance counters, Jikes RVM in which all experiments are done, and the Java applications that are used in the evaluation section of this paper.

O O B 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 B O O O O O B I O O O O O O O B B O O O O O B O O O O B O B B 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 B O O O O B O O O O B O B 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 B B 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 B B O O O O O B 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 O O O O O O O O B O O O O O O O O O B O O B O O O O O O O O O B O O O O O O O O O B O O O B O O B I 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 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 B O O O B O O O O O O O O O O O O B B 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 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 B 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 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 B 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 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 B 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 B B 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 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 B O O O O O B O O O O O 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 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 O O B O O O O O O O O O O O O O B O O O B O O O B O O O O O B 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 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 B 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 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 B O O O O O O O O B O O O O O O O O O B O O B O O O O O O O O O B O O O O B 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 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 B 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 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 B 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 B O O O O B O O O O O B O O B 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 B O O O O B O O O O O O O O O O O O O O O B O O B 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 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 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 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 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 O O O O O O O O O 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 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 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 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 B 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 O O O O O O O O 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 O B O B O O O O O O O O O O O O B O O O O O B O O O B


Mining for misconfigured machines in grid systems Grid systems are proving increasingly useful for managing the batch computing jobs of organizations. One well known example for that is Intel which uses an internally developed system called NetBatch to manage tens of thousands of machines. The size, heterogeneity, and complexity of grid systems are extreme. Therefore, these systems are very difficult to configure. This often results in part of the machines being inadequately set-up. Such misconfigured machines can have adverse effects on the entire system.We investigate a distributed data mining approach for detection of misconfigured machines. Our Grid Monitoring System (GMS) non-intrusively collects data from all available sources (log files, system services, etc.) available throughout the grid system. It converts raw data to data with ontological meaning and stores the resulting data on the machine it was obtained from; thus, limiting incurred overhead and allowing scalability. Following, when analysis is requested, a distributed outliers detection algorithm is employed to identify misconfigured machines. The algorithm itself is implemented as a recursive workflow of grid jobs. It is especially suited to deal with the conditions typifying grid systems, in which one can expect machines to rarely be available and to often fail altogether.We exemplify that our distributed data mining approach is indeed beneficial by using GMS to analyze the data on a large Condor pool. Of the four most outlied computers identified by the system three were indeed misconfigured and one apparently had a temporal problem that we could not recreate. Further investigation prove our approach is highly scalable, and suitable for large grid systems in which every pool may have thousands of computers. Grid systems have developed, over the last fifteen years, as a natural extension to both high-performance cluster technology and batch management systems. The supreme flexibility and scalability of grid systems proved key for the management of organizational computing power in today's data immersed and computationally intensive business arena. Grid systems manage pools of heterogeneous machines which usually already exist in organizations (e.g., servers and workstations). These machines are harnessed for the execution of jobs which can be submitted by any user in the organization. The number of machines controlled by a single system can sometimes reach tens of thousands -e.g., Condor [14] up to 20,000 at U. Wisconsin and NetBatch [8] as many as 35,000 at Intel. Many of the deployments of these systems manage computers located in several administration sites that are often geographically separated, and are organized in pools containing up to thousands of machines each.. Grid systems are notoriously difficult to configure. First, every installation of a grid system is slightly different because the organization of each pool -placement and number of services, etc. -reflects the network topology at the site. Secondly, the machines managed by a typical grid system can be very different from one another. Finally, many of the resources available to the different machines are time varying (e.g., software licenses expire, and storage space is filled-up with time). Hence, the number of attributes the system administrators have to configure is great, and each site might suffer very different problems. The configuration task requires administrators to have deep understanding of both grid system's internals and their own site organization. It is a complex and error-prone task.. Misconfigured machines, together with machines with faulty hardware or buggy software, can lead to the occurrence of 'black holes' (machines that accept many jobs and fail to complete any of them) or to other irregular machine misbehavior. At worst, a misconfigured machine can obstruct the work of the entire organization. The more daily effect of misconfigured machines is the reduction of the system's goodput ("the allocation time when a remotely executing application uses the CPU to make forward progress" [3] ). Worse still, misconfigured machines reduce the ability of users to predict system's response times. In production environments, where predictable availability of computing resources is important such problems cannot be tolerated.. To identify misconfigured machines, most organizations rely on user feedback and on domain experts' manual analysis of log files. However, many problems are not fixed because they pass unnoticed or unreported. Without any indication for the existence of a problem, analysis becomes nearly infeasible. Even when experts are aware of a problem, the information essential for detecting a misconfigured machine might be divided among different machines in the pool (e.g., matching related data at the matchmaker, submission related data on the machine from whom the job was submitted, etc.). Within each such machine, the details required for the analysis of the problem might be hidden in the vast amounts of configuration attributes, event logs, etc. relating to the multiple services (NFS, DFS, JVM, etc.) which interact in a large system. Clearly, therefore, manual analysis is time consuming, error-prone, and exhausting.. The dominant approach for automatizing misconfiguration detection in enterprise computing systems is relying on a rule-based expert system. A typical system employ the knowledge of domain experts to construct a set of rules for identifying problems and taking adequate corrective actions. However, expert systems have some limitations: the rules are constructed manually and therefore the accuracy of the rules and their completeness are limited [9] , experts' time is scarce and very expensive, and the rules are very difficult to maintain (e.g., when the system moves to a new version).. Contrast to expert systems, data mining algorithms extract useful information from large data sets with limited, if any, prior knowledge about the data. Therefore, it is suggested that a tool using data mining techniques can outperform rule based tools in misconfiguration detection. Assuming the majority of the machines in a well maintained pool are properly configured, the normative behavior of machines can be modeled and misconfigured machines can be detected as outliers.. We implemented the Grid Monitoring System (GMS) -an extension to the Condor grid system which automatically detects oddly behaving machines. The challenges in building GMS relate to both system architecture and data mining. On the system side, the challenges are the immensity of the data and the limited system resources allocated for monitoring on one hand, and the need to leave the Condor system unchanged -i.e., to rely entirely on existent data sources. We address the former problem by building a fully distributed information system in which data is not moved from its origin -thus producing in GMS about the same overhead existing logging facilities require. To make use of existing data source we implemented a mechanism that transforms the data from its raw form to an ontologically meaningful one.. On the algorithmic side, a distributed outlier detection algorithm was implemented in which every participant (i.e., computer in the grid system) can proceed at a different pace -based on its availability and the data it has. This allows detecting outliers even if most of the normative machines are not available. The algorithm was implemented using recursive calls for Condor workflows. Analysis is initiated by submitting a condor job and progresses through the automated submission of further jobs. To our best knowledge, our algorithm is the first distributed data mining algorithm which operates in a grid environment. Let alone, it is the first application of data mining for solving a grid related problem.. We experimented with GMS in a pool of 42 heterogeneous machines. Of these, GMS indicated four were misconfigured. In the first machine indicated, we found that an incorrect operating system configuration turned on a network service which overloaded the machine CPU. This overload caused Condor to evict jobs after a constant period of time. GMS pointed out that the user receives very little CPU, which made debugging easy. In the second machine an incorrect BIOS setting turned HyperThreading on and divided each processor into two weaker virtual machines. GMS identified that the CPU model does not match job launching and execution times. The third misconfigured machine had a disk which was nearly full. GMS indicated the higher than usual disk usage. The fourth machine had a temporary phenomena which dis-appeared when we rerun the experiment. We deem that result a false-positive. Further experiments verified GMS is scalable and suitable for operation in a real-life system. The rest of this paper is organized as follows: The next section presents a brief review of related works in the areas of automated failure analysis and outlier detection, as well as a brief introduction to grid systems' architecture. Section 3 describes the data, its acquirement and its preprocessing. Section 4 describes the analysis of the data and the distributed outliers detection algorithm. Section 5 briefly describes the architecture and implementation of the system. Section 6 outlines our experiments. Finally, conclusions are drawn in section 7. We study the problem of detecting misconfigured machines in large grid systems. The heterogeneity of these systems require a rich description of their operation, while their scale makes centralization of the data, as well as manual analysis of the data, inefficient. We therefore suggest a distributed architecture which enables automatic analysis of the data via data mining algorithms.. We implement a highly portable Grid Monitoring System (GMS) that relies on an ontology for virtualization of the underlying batch system and for enhancing data quality. We deploy our system on a heterogeneous Condor pool, and demonstrated its effectiveness by discovering three misconfigured machines.. Outlier detection is just one of the algorithms which can be implemented on top of GMS. Respectively, misconfiguration detection is just one of the possible applications of data mining for grid systems. We intend to extend GMS for various applications, such as resource preservation in workflows, runtime predication, etc.. Monitoring data is not static by nature. One of the more interesting aspects of this data, which we did not yet investigate, is its temporal nature. In the future, we intend to look into ways to analyze the temporal behavior of a grid system via GMS.

O O O O O B I 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 B I 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 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 B I 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 B I 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 I 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 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 B I 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 B I 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 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 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