Efficient and Resilient Backbones for Multihop Wireless Networks Abstract-We consider the problem of finding "backbones" in multihop wireless networks. The backbone provides end-to-end connectivity, allowing nonbackbone nodes to save energy since they do not have to route nonlocal data or participate in the routing protocol. Ideally, such a backbone would be small, consist primarily of high capacity nodes, and remain connected even when nodes are mobile or fail. Unfortunately, it is often infeasible to construct a backbone that has all of these properties; e.g., a small optimal backbone is often too sparse to handle node failures or high mobility. We present a parameterized backbone construction algorithm that permits explicit trade-offs between backbone size, resilience to node movement and failure, energy consumption, and path lengths. We prove that our scheme can construct essentially best possible backbones (with respect to energy consumption and backbone size) when the network is relatively static. We generalize our scheme to build more robust structures better suited to networks with higher mobility. We present a distributed protocol based upon our algorithm and show that this protocol builds and maintains a connected backbone in dynamic networks. Finally, we present detailed packet-level simulation results to evaluate and compare our scheme with existing energy-saving techniques. Our results show that, depending on the network environment, our scheme increases network lifetimes by 20 percent to 220 percent without adversely affecting delivery ratio or end-to-end latency.Index Terms-Network protocols, mobile computing, an algorithm/protocol design and analysis. I N multihop wireless networks, end nodes are typically responsible for relaying traffic [1] . However, we often utilize a "connected dominating set" (CDS) of nodes that form a routing backbone [2] , [3] . Nodes not in the backbone have at least one backbone neighbor (hence, the backbone is a dominating set). Further, since the nonbackbone nodes do not need to route traffic for other nodes, they can save energy by not participating in the routing protocol. If the hardware permits, the nonbackbone nodes can further save energy by entering a power-save or sleep mode, only waking up to send messages or check for pending messages. Smaller backbones lead to greater overall energy savings; as such, there have been many algorithms developed for constructing near-optimal CDSs in wireless networks [3] , [4] , [5] , [6] . 1 The problem of focusing only on the backbone size is that when nodes are battery-powered, the use of low-battery nodes in the backbone can shorten the overall network lifetime. Therefore, many schemes have been proposed that consider the residual battery power in selecting backbone nodes [7] , [8] , [9] . However, along with the battery capacity, these schemes often also use other criteria for including nodes in the backbone (e.g., randomized node selection for arbitration [7] ). This leads to the inclusion of low-capacity nodes in the resulting backbone.. Clearly, a small backbone composed of high-capacity nodes can significantly increase total network lifetime; the construction of such backbones is the subject of this paper.. The operating environments for multihop wireless networks can vary widely (e.g., minimal node mobility in sensor or rooftop networks [10] versus higher mobility for rescue operation). Ideally, a backbone construction algorithm should work well in a wide range of network environments. In some existing backbone construction algorithms, nodes use only local information to build and maintain a backbone quickly [2] , [7] , [8] , [9] . Although this class of backbone algorithms can be useful in dynamic networks, they do not provide any guarantee on performance objectives such as backbone size or node capacity. Other backbone construction schemes find a "good" connected backbone, e.g., with provable bounds on backbone size or control overhead. However, this second class of algorithms typically have higher control overhead, require longer convergence times, and do not provide efficient mechanisms for backbone maintenance [3] , [4] . Therefore, they are most useful in static environments, but in dynamic networks, the overhead of maintaining a "good" backbone can be prohibitive. Due to such inherent heterogeneities in the operating environments for multihop wireless networks, it is unlikely that a single fixed algorithm will work best in all situations. In this work, we develop a general solution that can be tailored to particular network environments.. The contributions of this paper are given as follows:. 1. We present a parameterized backbone construction algorithm, which permits explicit trade-offs between different performance measures including backbone size, resilience to node movement and failure, node capacity, and path lengths. Our scheme has two logical steps. First, each node nominates its highest capacity neighbor as its "leader." Next, we connect these leaders such that the resulting backbone achieves specific efficiency and resilience properties. 2. We prove that our scheme can construct essentially best possible backbones with respect to node capacity and backbone size. To the best of our knowledge, this is the first work that achieves both objectives at the same time. 3. Based upon our backbone construction algorithm, we present a distributed protocol that builds and maintains a connected backbone in dynamic networks where nodes are mobile, and node capacity constantly changes. 4. We present simulation results that investigate different performance aspects of our proposed algorithm, including backbone size, network lifetime, backbone-node capacities, and path lengths. Compared to previous energy-saving techniques, our scheme increases network lifetimes by 20 percent to 220 percent without adversely affecting data delivery or end-to-end latency.. Roadmap. We present the first phase of our algorithm (leader nomination) in Section 2 and the second phase (leader connection) in Section 3. We present our distributed protocol in Section 4 and simulation results in Section 5. We compare our scheme with related work in Section 6 and conclude in Section 7. See Appendix A for proofs omitted in the body of this paper. We have presented a parameterized scheme TRUNC-K that builds a connected backbone in multihop wireless networks. We have also proved that our scheme can construct essentially best possible backbones with respect to backbone size and node capacity. We generalized our scheme to construct and maintain a resilient backbone in dynamic networks. Through detailed simulations, we demonstrated that our proposed scheme outperforms existing energysaving techniques in many aspects. In the future, we plan to investigate how to adjust the K value according to network environments (e.g., node mobility or density). Then, we will be able to include adaptive protocol mechanisms that can automatically change the K value when network parameters change over time (e.g., increased mobility, or new node deployment). We also want to analytically investigate the backbone performance with different K values. As discussed earlier, another interesting future direction is to design a backbone construction scheme that jointly considers node capacity and link quality. Many distributed algorithms have been proposed to find a CDS. Das and Bharghavan [3] apply well-known centralized algorithms [6] . Using the unit-disk graph model, Wan et al. [4] propose a message-optimal algorithm that achieves a constant approximation ratio. Dubhashi et al. [5] propose a distributed algorithm that finds an Oðlog ÁÞ approximation to the minimum CDS in Oðlog n log ÁÞ time. None of them consider backbone maintenance or node capacity. As described in Section 5, SPAN [7] , GAF [8] , and the scheme by Wu et al. [9] all consider remaining energy level when finding a connected backbone. However, none achieves a maximum-capacity backbone nor provides a bound on the backbone size. Recently, Basagni et al. [20] present simulation results and compare a number of existing schemes for connected backbone construction in various aspects such as completion time, backbone size, and message overhead; also related are clustering algorithms for sensor networks [27] , [28] . Kuhn et al. [27] propose a clustering algorithm that finds a dominating set in the initial deployment phase. HEED [28] selects cluster-heads based on the residual energy and parameters such as node degree but assumes that the network is quasi-stationary. In contrast, TRUNC-K provides backbone-maintenance mechanisms for dynamic networks. Recently, Lee et al. [29] present a backbone-construction scheme in a selfish environment and report experimental results from an implementation on a 12-node testbed.. TRUNC-K uses the sleep mode to save energy. There are schemes that exploit the sleep mode operation but are not based on the connected backbone approach. A number of wireless MAC protocols attempt to save energy by putting nodes to sleep mode depending on various criteria [30] , [31] . Zheng and Kravets [32] propose an on-demand powersaving scheme, where nodes stay awake according to traffic [33] uses a simple mechanism to determine "active" and "passive" nodes. However, AS-CENT does not guarantee network connectivity. We also can achieve energy saving through transmission power control at each node [34] , [35] , [36] , which is complementary to our work.

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


Incremental XPath evaluation Incremental view maintenance for XPath queries asks to maintain a materialized XPath view over an XML database. It assumes an underlying XML database D and a query Q. One is given a sequence of updates U to D, and the problem is to compute the result of Q(U(D)): the result of evaluating query Q on database D after having applied updates U. This article initiates a systematic study of the Boolean version of this problem. In the Boolean version, one only wants to know whether Q(U(D)) is empty or not.In order to quickly answer this question, we are allowed to maintain an auxiliary data structure. The complexity of the maintenance algorithms is measured in, (1) the size of the auxiliary data structure, (2) the worst-case time per update needed to compute Q(U(D)), and (3) the worst-case time per update needed to bring the auxiliary data structure up to date. We allow three kinds of updates: node insertion, node deletion, and node relabeling. The XPath language, proposed by the World Wide Web Consortium (W3C), is essentially a query language for selecting nodes in an XML document. Nodeselection is one of the most basic operations on XML documents and therefore XPath lies at the core of most of today's data processing languages for XML. For example, it forms an essential component of languages such as XQuery, XSLT, XML Schema (which uses XPath for defining keys), and so on.. The most fundamental algorithmic question concerning XPath is query evaluation. That is, given an XPath query Q and an XML document D, return all nodes that are selected by Q in D. The query evaluation problem for various fragments of XPath has been researched quite intensively over the last decade (see Benedikt and Koch [2008] for an overview). In this article, we are interested in the incremental XPath evaluation problem. We first explain the general idea behind incremental XPath evaluation and discuss the variant that we study later. In incremental XPath evaluation one is given an XPath query Q and XML data D. Furthermore, we assume that the answer for Q on D is already known. However, when D is updated to D , we want to be able to infer the updated answer for Q on D as quickly as possible. The idea is, of course, to maintain extra information such that the updated answer to Q on D can be computed without having to reevaluate Q from scratch.. We provide two motivating scenarios for incremental XPath evaluation in general.. (A) Trigger conditions. A database system has a trigger condition in which the precondition is stated by means of an XPath query. Here, the system may be interested in knowing very quickly after an update whether the event of the trigger needs to be carried out or not. (B) View maintenance. A database system has a certain view definition, formulated as an XPath query, and we simply want to maintain its results after updates.. Notice that a scenario similar to (B) can also be relevant when exchanging data on the Web. When a community exchanges data, it is often the case that a certain user Y is interested in the result of a fixed query on the data of another user X. To make the example more concrete, it may be useful to think of X as a huge bioinformatics database and of Y as a research group that is only interested in a particular set of sequences. We also assume that X knows Y's view definition and wants to keep Y up-to-date (Y has a query subscription). The data of X may change often, while the interests of Y remain the same. Of course, it could be beneficial for both parties if Y's view definition does not have to be completely recomputed and the entire result sent over the Internet every time X's data changes. In such a setting, Y may herself have a representation of the current result of her query in order to do local research and analysis. So, after an update of X's data, it would be relevant for X to be able to quickly determine the changes that Y has to make to her old result, rather than sending her the complete new result, which may be much larger than the update. More concretely, say that D old (resp. D new ) is the database of X before (resp. after) an update and V old and V new are the results of Y's view on D old and D new , respectively. Since Y has V old locally, which needs to be updated, it may be much more beneficial for X to send a list of update(. . . ) / delete(. . . ) instructions to Y that update V old to V new , rather than sending the possibly huge V new to Y. The nonincremental XPath evaluation problem has been studied quite extensively in the literature [Bojańczyk and Parys 2008; Gottlob et al. 2005a Gottlob et al. , 2005b Götz et al. 2009; Parys 2009] . We refer to Benedikt and Koch [2008] for a detailed overview. There is a large amount of work on indexing on XML documents (e.g., O'Neil et al. [2004] ), but indexing schemes are usually aimed towards answering a large class of XPath queries and require time at least linear in the document for complicated queries.. There are already several papers dealing with incremental XPath evaluation [Matsumura and Tajima 2005; Onizuka et al. 2005; Sawires et al. 2006 Sawires et al. , 2005 , but none of these papers give any worst-case complexity bounds. The papers Matsumura and Tajima [2005] and Sawires et al. [2005] only consider leaf deletion and insertion, and Onizuka et al. [2005] considers deletion and insertion of entire subtrees.. An early paper on pattern matching in trees is by Hoffmann and O'Donnell [1982] . They studied pattern matching in trees and also treat incremental maintenance, but their setting is rather different from ours. Hoffmann and O'Donnel's work is motivated by problems related to program interpreters, code optimization in compilers, and automated theorem proving. In particular, this means that they only consider queries with the child-relation, which should be injectively mapped onto ranked trees. Our queries are more general, do not have injective semantics, and apply to unranked trees. The results on incremental maintenance in Hoffmann and O'Donnell [1982] are essentially a byproduct of their preprocessing of the patterns, which is similar to the Knuth-Morris-Pratt string matching algorithm. Their complexity results are not comparable to ours, since they spend more time on preprocessing and have a higher complexity with respect to the tree size but a lower complexity with respect to the query size.. The incremental validation of XML schemas [Balmin et al. 2004; Barbosa et al. 2004 ] is closely related to our problems. In incremental schema evaluation, one is asked to maintain satisfaction of an XML document by an XML schema, where the document can be updated. Balmin et al. [2004] describe algorithms for incremental validation of DTDs, XML Schemas, and tree automata. We use their incremental maintenance result for tree automata to infer some upper bounds in this article.. Incremental view maintenance for Active XML has been studied by Abiteboul et al. [2007 Abiteboul et al. [ , 2009 . They investigate the complexity of deciding whether there exists a possible update sequence to an active XML document that satisfies a query and note that incremental maintenance is possible by

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


A software engineering approach to ontology building Ontologies are the backbone of the Semantic Web, a semantic-aware version of the World Wide Web. The availability of large-scale high quality domain ontologies depends on effective and usable methodologies aimed at supporting the crucial process of ontology building. Ontology building exhibits a structural and logical complexity that is comparable to the production of software artefacts. This paper proposes an ontology building methodology that capitalizes the large experience drawn from a widely used standard in software engineering: the Unified Software Development Process or Unified Process (UP). In particular, we propose UP for ONtology (UPON) building, a methodology for ontology building derived from the UP. UPON is presented with the support of a practical example in the eBusiness domain. A comparative evaluation with other methodologies and the results of its adoption in the context of the Athena EU Integrated Project are also discussed. Ontologies, i.e., semantic structures encoding concepts, relations and axioms, providing a model of a given domain, are the backbone of the Semantic Web [1] , a semantic-aware version of the World Wide Web. Ontologies allow web resources to be semantically enriched. This is a pre-condition to provide new, advanced services over the web, such as semantic search and retrieval of web resources.. Ontology building is a task that pertains to ontology engineers, an emerging expert profile that requires the expertise of knowledge engineers (KEs) and domain experts (DEs). Even though automatic ontology learning methods (such as text mining and knowledge extraction [2] ) significantly support ontology engineers by speeding up their task, there is still the need of a significant manual effort, in the completion, consolidation, and validation of the automatically generated ontology.. Today, there are several methods for building ontologies, but no one is yet emerging as a clear reference. The aim of this paper is to present a method, namely the Unified Process for ONtology (UPON) building, based on a well-established and widely used software engineering process, the Unified Process (UP) [3] .. UPON is a novel approach to large-scale ontology building that takes advantage of the UP and the Unified Modeling Language (UML) [WR1] . This paper illustrates the phases, the steps, and intermediate outcomes of the UPON method, designed in accordance with the UP method, aimed at guiding ontology engineers in the production of an effective and valuable domain ontology [4] . UPON has been used in the context of the Athena Integrated Project [WR2] , to build four different ontologies in as many different pilots, established in the domain of automotive, aerospace, kanban logistics, and furniture. Throughout the paper, we discuss a running example concerning the latter: an eProcurement ontology for the Spanish woodworking and furniture sector. The DEs were coming from AIDIMA [WR3], an Athena partner dedicated production of intermediate results that can be readily available to the users of the ontology-based applications (e.g., semantic search).. The paper is organized as follows. Section 2 presents an overview of the UPON approach to ontology building. Section 3 describes UPON in detail with the support of a running example. Section 4 discusses previous work in this area and provides a first comparative evaluation of UPON, against other ontology building methodologies. Finally, in Section 5, we provide conclusions and future research directions. In this paper, an ontology building methodology, UPON, based on the software engineering UP, has been presented. Building an ontology is different from developing a software system, but the underlying principles and the basic phases are the same; furthermore, diagrammatic specifications can be used for each phase of the lifecycle of both software systems and ontologies.. The strength of the proposed approach lies in the UP being a highly scalable and customizable methodology. It can indeed be tailored to fit a number of variables: the ontology size, the domain of interest, the complexity of the ontology to be built, the experience and skill of the project experts and their organization. Furthermore, modelers can decide to adapt the scheme here presented to one of the methodologies derived from the UP (like the Rational Unified Process).. We compared UPON against the main ontology building methodologies, showing that, within the scope, its features are aligned, and sometimes outperform the best solutions. Furthermore, UPON has been experimented by several European projects (Athena being the most noticeable) and some industrial contexts. The experiments demonstrated its applicability and high degree of acceptance by both business people and ontology engineers. In the future we intend to proceed along two lines in parallel. On the one hand, to adopt UPON in new industrial applications (we are applying it to the construction of an ontology to support the automation of software project management) to acquire additional validation cases. A second line is represented by automatic support of the methodology. With this respect, we will carefully consider the case of embedding (part of) it in the new functionalities of ATHOS, the Ontology Management System developed in our laboratory.

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


Single-machine scheduling with periodic and flexible periodic maintenance to minimize maximum tardiness This paper considers a single machine scheduling problem with several maintenances periods. Specically, two situations are investigated. In the rst one, maintenance periods are periodically xed: maintenance is required after a periodic time interval. In the second one, the maintenance is not xed but the maximum continuous working time of the machine which is allowed is determined. The objective is to minimize the maximum tardiness. These problems are known to be strongly NP-hard. We propose some dominance properties and an ecient heuristic. Branch-and-bound algorithms, in which the heuristics, the lower bounds and the dominance properties are incorporated, are proposed and tested computationally. The majority of the studies in machine scheduling literature assumes that machines are available all times. However, this availability may not be true in real industry settings. Unavailability periods often appear in industry due to a machine breakdown (stochastic) or preventive maintenance (deterministic) during the scheduling period. Therefore, a more realistic scheduling model should take into account associated machine maintenance activities. For a survey of scheduling problems with limited machine availability we refer the reader to the survey paper [15] . Recent papers take into account these unavailability periods (see for instance [1] , [2] , [3] , [6] , [8] , [9] , [12] , [14] etc...). Most of these papers consider that characteristics of the unavailability periods are known in advance, i.e. that the maintenance of a machine is a xed time interval known beforehand and study how to schedule jobs under the constraint of machine unavailability. However, in some cases (e.g. preventive maintenance), the maintenance of a machine is also controllable. In other words, we can decide when to maintain the machine. The jobs and the maintenances are scheduled simultaneously. In this paper, we study the problem of minimizing maximum tardiness of jobs.. In most of papers, there is only one unavailability or availability period for each machine [15] . As stated earlier, however, maintenance is scheduled regularly, or periodically, in many manufacturing systems. Therefore, there is a need to develop scheduling methods to deal with periodic maintenance, which usually has more than one maintenance period. In our problem, there are several maintenance periods where each maintenance is required after a time interval.. More precisely, in this paper we consider the single machine maximum tardiness problem subject to periodic maintenance and no preemption (i.e. once a job is started it must be completed without interruption). We consider two situations. In the rst case (periodic maintenance) the maintenance periods are xed periodically. This problem was considered in [4] and [11] ; and is NP-hard since the problem that minimizes the maximum lateness subject to one unavailability period and non resumable jobs is NP-hard [10] . Chen and Liao [4] and [11] proposed a heuristic and branch-and-bound algorithm to solve this problem. Other works can be found in the literature regarding xed maintenance period. We can quote Allaoui and Artiba [2] . They consider the problem of more complex environment such as hybrid owshop. They proposed an hybrid approach, combining simulation and heuristics to solve the problem of minimizing makespan, mean owtime and total tardiness. They showed that classical heuristics became ineective if unavailability constraints, such as maintenance, are taking into account. In [3] same authors proposed also a branch and bound procedure for minimizing the makespan in a two stage hybrid owshop, where the rst stage has only one machine and all machines are subject to unavailability constraints. In the second case (exible periodic maintenance) that we consider, the maintenance is not xed but the maximum continuous working time allowed of the machine is xed. This problem is strongly NP-hard because it becomes a bin packing problem when all due dates are 0. It is known that bin packing is a strongly NP-hard problem [5] . Note that the same problem was studied in [13] in order to minimize the total completion time of jobs, where several heuristics and a branch-and-bound algorithm are proposed. Graves and Lee [7] study several variants of the same problem.. The rest of this paper is organized as follows. Section 2 denes the problems and introduces some notation. Sections 3 and 4 are devoted respectively to periodic maintenance and exible periodic maintenance. Various dominance rules (dierent form that of [4] and [11] ) are derived and used in the heuristic and branch and bound algorithm proposed. Section 5 reports on computational experience with the algorithms. Finally, Section 6 provides a summary of the main results of this paper, and outlines some useful directions for future research. is the number of job in i th position and M i is the i th operation of maintenance 2 Problem denition and notation. We consider the scheduling problem with n jobs J 1 , J 2 , ..., J n to be processed on a single machine. Each job J i has a processing time p i and a due date d i . All jobs are available at time zero and no preemption is allowed. The machine must be maintained periodically. In the periodic version the distance between two consecutive maintenance periods is ∆ (see Figure 1 ) whereas in the exible periodic version the distance is less than ∆ (see Figure 2 ). The maintenance time is t. We assume that p i ≤ ∆ for all i ∈ {1, ..., n} otherwise there is no feasible schedule. A sequence giving the processing order of the jobs denes a schedule since there is no advantage in keeping the machine idle when there are jobs to be processed. A schedule π = (J [1] , J [2] , ...J [n 1 ] , M, J [n 1 +1] , ..., J [n 2 ] , M, ...) contains a sequence of jobs and the maintenance inserted in job sequence. In a schedule, jobs processed continuously form a batch, denoted as B. Thus a schedule π can be denoted as π = (B 1 , t, B 2 , t, ..., t, B L ) where t is the maintenance and L is the number of batches.. Note that L is a decision variable in our problem. Let J [i] be the ith job in a schedule, C i (π) be the completion time of job J i , and T i (π) = max{C i (π) − d i ; 0} be the tardiness of job J i . The objective is to nd a schedule which minimizes the maximum tardiness of jobs T max (π) = max i T i (π). It is worth mentioning that when preemption is allowed the rst problem can be solved by the preemptive EDD (PEDD) rule and any optimal solution of the rst problem is also optimal for the second one. When there is no ambiguity, C i (σ), T max (σ), B m (σ), q m (σ) and m(i, σ) are simplied into The importance of maintenance has been gradually accepted by the decision maker.. Therefore, it has become a common practice to schedule maintenance periodically in many manufacturing systems. Unfortunately, most papers discussing maintenance assume there is only one maintenance period. In this paper, we have addressed the single machine maximum tardiness problem subject to periodic maintenance and nonresumable jobs. We have considered two versions which are both NP-hard. The rst one corresponds to a periodic maintenance. It consists of several maintenance periods where each maintenance is required after a periodic time interval. In the second situation, the maintenance is not xed but the maximum allowed continuously working time of machine is xed. We have proposed for each of them a heuristic and a branch and bound algorithm. Computational experiments have been done to evaluate the eectiveness of the algorithms. Moreover, for the rst version an extensive empirical comparison of the proposed heuristic with Liao and Chen [11] heuristic shows the superiority of the former. One future research direction is to extend these scheduling problems from the single machine case to the parallel machine case and ow-shop problem. Table 7 Comparison between H1 and Heuristic in [11] for the periodic version

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


Depth Perception from a 2D Natural Scene Using Scale Variation of Texture Patterns In this paper, we introduce a new method for depth perception from a 2D natural scene using scale variation of patterns. As the surface from a 2D scene gets farther away from us, the texture appears finer and smoother. Texture gradient is one of the monocular depth cues which can be represented by gradual scale variations of textured patterns. To extract feature vectors from textured patterns, higher order local autocorrelation functions are utilized at each scale step. The hierarchical linear discriminant analysis is employed to classify the scale rate of the feature vector which can be divided into subspaces by recursively grouping the overlapped classes. In the experiment, relative depth perception of 2D natural scenes is performed on the proposed method and it is expected to play an important role in natural scene analysis. Some two-dimensional scenes give a very strong feeling of depth perception despite the fact that they are depicted on flat surfaces. There is some information which can allow us to perceive depth in a 2D scene. These sources of information are commonly called depth or distance cues. In general, the binocular depth cue, what is called disparity, requires two images developed from different positions like our two eyes. On the other hand, monocular cues called pictorial cues by Goldstein [1] are limited to one eye.. Linear perspective is the typical monocular cue, and it is related to relative size and texture gradient as shown in Fig. 1 . The more distant the object, the smaller it appears when it is farther away from the viewer. This is called relative size. Most surfaces, such as walls and roads and a field of flowers in bloom, have their own textures. As the surface gets farther away from us, this texture appears finer and smoother.. Gibson [2] strongly emphasized the role of texture gradient for specifying the layout of 3D surfaces. Furthermore, Tsutsui [3] reported the neural correlates of depth perception from texture gradient in the cortex. They show that texture gradient is an important cue for perceiving a 3D surface orientation for monkeys as well as humans. Some researchers have argued that relative size and texture gradient are not separate cues because of the similarity of how these depth cues work [4] . In this paper, we approach a new framework to extract depth information from a 2D natural scene using a multiscale texture classification scheme. Relative depth information can be perceived by classifying scale rate of textured patterns which appear in a texture gradient. The depth information is computed by feature vectors which are extracted from higher-order local autocorrelation functions. The autocorrelation functions can be used to assess the amount of regularity as well as fineness or coarseness of the texture pattern. Extracted feature vectors are computed from an small area so that they are similar to each other. These similar feature vectors constitute many overlapped distributions in the usual linear discriminant space. Overlapped distributions become the main reason for bringing a loss of effective projection space to each individual distribution.. In order to take such overlapped distributions into consideration, we proposed the hierarchical linear discriminant analysis in our earlier work [5] . The hierarchical discriminant analysis can divide the discriminant space into subspaces by recursively grouping the overlapped classes. Our proposed method of classifying similar texture patterns was shown to have more successful results through several texture databases. In this paper, the hierarchical discriminant analysis is employed to classify similar texture patterns with different scales. We performed an experiment to extract relative depth from natural 2D scenes. The results show that texture gradient plays an important role in depth perception of natural scene analysis. More extensive application work will be performed to explore the perception of 3D surface orientation and distance estimation using the following method. We have developed a new framework for depth perception from a 2D scene using multi-scale texture classification. The multi-scale features are extracted by higher-order local autocorrelation functions and are classified by the hierarchical discriminant analysis. Experimental results show that the proposed method is effective in depth perception for natural scene analysis. More extensive application work needs to be performed in order to explore the perception of 3D surface orientation and distance estimation.

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


Timing analysis of asynchronous systems using time separation of events Abstract-This paper describes a pseudo-polynomial time algorithm for timing analysis of a class of choice-free asynchronous systems, called tightly-coupled systems, with both min and max type timing constraints and bounded component delays. The algorithm consists of two phases: (i) long-term behavior analysis, that computes bounds on the time separation of events after the system has run for a sufficiently long period of time, and (ii) startup behavior analysis, that computes time separations between events during an initial startup period after the system is powered up. The results of the analysis are conservative in the worst-case; nevertheless, they are exact in our experiments. To demonstrate the practical utility of the approach, an asynchronous differential equation solver chip has been modeled and analyzed using the proposed algorithm. We report results of datapath timing verification, inter-controller protocol timing verification and performance analysis of the chip using the proposed technique. There is mounting evidence that asynchronous circuits are finding a niche in high-performance applications, such as Intel's asynchronous instruction length decoder [1] , [2] and the asynchronous differential equation solver benchmark circuit [3] . Common traits in these systems are a high degree of concurrency, distributed control and implicit timing assumptions to hide the control overhead. In order to guarantee correct operation of these systems as well as to estimate their performance, efficient timing analysis techniques are needed. The problem is compounded by the fact that statistical variations in manufacturing and operating conditions result in uncertainties in component delays in a chip. Consequently, timing analysis techniques for asynchronous systems with uncertain delays are needed.. A central problem in the analysis of asynchronous systems is computing bounds on the time separation between events [4] , [5] , [6] , [7] , [8] , [9] , [10] , [11] , [12] , [13] , [14] . Existing techniques typically focus on controller behavior and intercontroller communication protocols, that involve synchronization or max type timing constraints in addition to linear constraints between event times. Systems with max-only or maxand-linear constraints have been well-studied and efficient algorithms exist for computing time separations in these systems [8] , [9] , [15] , [16] , [17] , [11] , [14] . However, modern highperformance asynchronous systems (e.g., the system in [3] ) make implicit timing assumptions in both the datapath and control to facilitate design of high-speed circuits. Therefore, it is important to model and analyze both datapath and controller behaviors. Modeling datapath behavior, however, requires the use of min type timing constraints, especially when modeling components at a low level of abstraction. Similarly, performance metrics, such as the loop delay of an iterative process, are best modeled with both min and max type timing constraints. Therefore, there is a need for extending existing techniques for maxonly systems to systems with min and max constraints, while remaining efficient.. Unfortunately, the problem of computing time separation bounds in systems with both min and max constraints is known to be computationally intractable [8] . Earlier researchers have proposed worst-case exponential-time techniques for analyzing such systems [18] , [8] , [13] , [19] . However, exponential-time techniques are not always well-suited in practice, e.g., in a design-analyze-redesign environment where multiple passes of analysis are often needed. More efficient timing analysis techniques that are approximate in the worst-case, but compute reasonably accurate results in practice may be more useful in such situations. Such techniques can also serve as filters to quickly narrow down the set of potential timing problems in a large design. The reduced set of potential problems can then be analyzed by more expensive exact techniques, leading to a pragmatic approach to timing analysis of large systems.. The above considerations motivate the current work. We describe an efficient algorithm for computing approximate bounds on the time separation of events in a class of asynchronous systems called tightly-coupled systems. Events in a tightly-coupled system may repeat over time, component delays can assume arbitrary values between specified bounds, and both min and max type timing constraints may be present. However, for efficiency of analysis, the system is assumed to be choice-free. Although this restriction is significant, we believe that a large and important class of applications can be modeled and analyzed as tightly-coupled systems. The results of such an analysis must, however, be interpreted carefully -they apply only during choice-free operation of the system. To demonstrate the practical utility of the approach, an asynchronous differential equation solver has been modeled and analyzed using the proposed algorithm.. The main contributions of this paper are summarized below. Design of an efficient algorithm for computing approximate bounds on the time separation of events in a class of choicefree systems with both min and max type timing constraints. For systems with integer-bounded delays, an upper bound on the time complexity is derived.. Application of the above algorithm to verify timing constraints and estimate performance bounds of an asynchronous differential equation solver chip.. The remainder of this paper is organized as follows. Section II surveys related work on timing analysis of asynchronous systems. Section III describes cyclic timing constraint graphs as a formalism for representing timing constraints in systems with repeated events and gives a characterization of tightly-coupled systems. Section IV describes an efficient algorithm for computing approximate bounds on the time separation of events in tightly-coupled systems. Section V describes application of the algorithm to verify timing constraints and estimate performance bounds of an asynchronous differential equation solver chip. Section VI describes the limitations of the proposed technique. Section VII concludes the paper. This paper presented a pseudo-polynomial time algorithm for computing conservative bounds on the time separation of events in a class of choice-free asynchronous systems with min and max type timing constraints. The systems considered are more general than those considered earlier by Amon et al. [16] , Hulgaard et al [17] and Myers et al. [15] . Although the algorithm is based on an idea similar to Myers and Meng's algorithm [15] , there are several important extensions to and differences from their work. We believe that these represent important contributions to the existing body of work on timing analysis of asynchronous systems with min and max timing constraints. A complete asynchronous differential equation solver chip has been modeled and analyzed using the proposed technique, demonstrating the practicality of the approach. Although the analysis is conservative in the worst-case, our experiments (Di Eq and other examples adapted from the literature [12] , [13] , [10] , not all of which could be described in the paper due to lack of space) yielded exact results. This suggests that carefully designed efficient algorithms for approximate timing analysis of asynchronous systems can be a promising alternative to more expensive exact techniques. Such techniques can be extremely useful in design-analyze-redesign environments, or may even be used as fast filters to narrow down the set of potential timing problems in large and complex designs. We believe that such techniques will play an important role in helping asynchronous circuits gain wider acceptance in niche application domains. Burns [20] defined the cycle period of an asynchronous system as the asymptotic average time separation between consecutive occurrences of the same event, and proposed a polynomialtime algorithm for computing the period of max-only systems with fixed component delays. Subsequently, Lee [21] extended this work to systems with disjunctive constraints, of which min constraints are a special case. The worst-case complexity of Lee's technique is exponential in the size of the system. Gunawardena [22] gave a theoretical framework for analyzing systems of min and max constraints with fixed delays. He studied the periodic behavior of such systems and gave an analytic formula for the period. Several other researchers have also modeled asynchronous circuits as systems of repeated events with varying delay assumptions, and proposed different techniques for computing their performance metrics. A few representative works are those of Williams [23] , Nielsen and Kishinevsky [24] , Tofts [25] , Kudva, Gopalakrishnan and Brunvand [26] , Xie and Beerel [27] and Ebergen and Berks [28] , [29] .. McMillan and Dill [8] showed that finding exact bounds on the time separation of events is computationally intractable when both min and max timing constraints are present and component delays are uncertain but bounded. They proposed a polynomial-time algorithm for analyzing systems of nonrepeated events with only max constraints, and gave a pseudopolynomial time algorithm for systems with max and linear constraints. They also described a branch-and-bound algorithm, with worst-case exponential running time, for analyzing systems of min, max and linear constraints. Vanbekbergen et al. [9] proposed a cubic time algorithm for max-only systems with nonrepeated events. Burks and Sakallah [19] described a branchand-bound technique and a mixed integer linear program formulation for analyzing systems with min, max and linear timing constraints; however, both their techniques have worst-case exponential running time. In her dissertation [11] , Walkup described an algorithm for analyzing systems of linear and max constraints, with applications to interface timing verification and interface logic synthesis. Yen et al. [14] have described another algorithm for interface timing verification in systems with max and linear constraints. The algorithms of both Walkup and Yen apply to systems with non-repeated events, and are conjectured to run in polynomial-time. The exact complexity of the max and linear problem is, unfortunately, not yet known.. Myers and Meng described a polynomial-time algorithm for approximate timing analysis of max-only systems with repeated events and bounded delays [15] . In their method, a cyclic graph representation, called an event-rule system, is used to represent temporal dependencies between events. Their algorithm effectively unfolds this graph into an infinite acyclic graph and analyzes a finite subgraph to compute approximate bounds on the time separation between events. Amon, Hulgaard, Burns and Borriello [16] , [17] considered systems of repeated events with only max constraints, and proposed an algebraic technique for computing exact bounds on the time separation of events. Their technique implicitly unfolds a cyclic graph into an infinite acyclic graph and then uses algebraic techniques to determine the maximum time separation between a pair of events, maximized over all unfoldings. The worst-case complexity of their technique is exponential in the size of the system description. Hulgaard and Burns [30] , [13] also extended this work to systems with certain types of choices. Among other related works, Amon and Borriello [18] have described a symbolic timing verification technique based on constraint logic programming (CLP). Girodias, Cerny and Older [31] have described another timing verification technique based on CLP with relational interval arithmetic. Symbolic timing verification using Presburger formulas has been studied recently by Amon et al. [32] . These techniques, however, have worst-case complexity at least exponential in the size of the system description. Chakraborty et al. [33] have described a polynomial-time technique for obtaining conservative estimates of timing constraints required for correct operation of a class of asynchronous circuits. In [3] , a technique for uncovering timing bugs in an asynchronous differential equation solver chip has been reported.. The work that comes closest to the present work is that of Myers and Meng [15] . However, there are important extensions to and differences from their work, as summarized below.. The proposed algorithm can be used to analyze a class of systems with both min and max timing constraints. In contrast, Myers and Meng's algorithm is applicable to max-only systems.. For systems with finite component delays, it is shown that after the system has run for a sufficiently long period of time, finite bounds on the time separation of events can be obtained even without any knowledge of the the behavior of the system immediately after power-up. Although this applies to Myers and Meng's algorithm as well, they do not prove that the bounds are finite.. The proposed algorithm consists of an iterative refinement phase, in which the computed time separation bounds monotonically approach their asymptotic values with every iteration. This is called monotonic convergence of the bounds. Myers and Meng do not study similar properties of the computed bounds.. A notion of convergence of analysis is defined, and an analytic upper bound on the number of iterations until converegence is derived for systems with integer-bounded delays. The work of Myers and Meng does not give such an analytic bound.

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


An adaptive hierarchical domain decomposition method for parallel contact dynamics simulations of granular materials A fully parallel version of the Contact Dynamics (CD) method is presented in this paper. For large enough systems, 100% efficiency has been demonstrated for up to 256 processors using a hierarchical domain decomposition with dynamic load balancing. The iterative scheme to calculate the contact forces is left domain-wise sequential, with data exchange after each iteration step, which ensures its stability. The number of additional iterations required for convergence by the partially parallel updates at the domain boundaries becomes negligible with increasing number of particles, which allows for an effective parallelization. Compared to the sequential implementation, we found no influence of the parallelization on simulation results. Discrete element method simulations have been widely employed in scientific studies and industrial applications to understand the behavior of complex many-particle systems such as granular materials. The common property of these methods is that the time evolution of the system is treated on the level of individual particles, i.e. the trajectory of each particle is calculated by integrating its equations of motion. Among the discrete element methods, soft particle molecular dynamics (MD) [1, 2] , event driven (ED) [3, 4] and contact dynamics (CD) [5, 6, 7, 8] are often used for simulating granular media.. Molecular dynamics is the most widely used algorithm for discrete element simulations. For granular materials, the contact forces between the soft particles stem from visco-elastic force laws. Interactions are local, therefore efficient parallelization is possible [9, 10, 11, 12] with 100% efficiency for large systems (Throughout the paper, the performance of a parallel algorithm is quantified by the usual quantities: the speedup S(N p ), which is the ratio of the run time of the non-parallel version on a single processor to the run time of the parallel version on N p processors, and the efficiency E=S/N p ×100%). The time step and therefore the speed of MD simulations is strongly limited by the stiffness of the particles, as collisions must be sufficiently resolved in time. Molecular dynamics is efficient for dense systems of soft particles, but much less so for hard particles and dilute systems.. The event driven dynamics [13, 14] considers particle interactions of negligible duration compared to the time between collisions. Particle collisions are thus treated as instantaneous events, and trajectories are analytically integrated in between. This makes ED favorable in dilute granular systems, where the above condition holds. The parallelization of this algorithm poses extreme difficulties, since the collisional events are taken from a global list, which in turn is changed by the actual collision. In general, a naive domain

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


Stochastic approximation algorithm for optimal throughput performance of wireless LANs In this paper, we consider the problem of throughput maximization in an infrastructure based WLAN. We demonstrate that most of the proposed protocols though perform optimally for connected network (no hidden terminals), their performance is worse than even that of standard IEEE 802.11 in presence of hidden terminals. Here we present a stochastic approximation based algorithm that not only provide optimum throughput in a fully connected network but also when hidden nodes are present. Infrastructure based IEEE 802.11 has emerged as one of the most popular access mechanisms for wireless local area networks (WLANs). Since its inception, significant effort has been made for improving its throughput. Most of the proposals aimed at maximizing the throughput of IEEE 802.11 DCF, propose algorithms to tune the access probability of p-persistent CSMA adaptively using parameter estimation. Through simulations we see that the performance of such algorithms though optimal in a connected network (no hidden terminals), their throughput is lesser than even that of standard 802.11 in the presence of hidden terminals Fig. 1

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


Fine-Grain Interoperability of Scientific Workflows in Distributed Computing Infrastructures Abstract Today there exist a wide variety of scientific workflow management systems, each designed to fulfill the needs of a certain scientific community. Unfortunately, once a workflow application has been designed in one particular system it becomes very hard to share it with users working with different systems. Portability of workflows and interoperability between current systems barely exists. In this work, we present the fine-grained interoperability solution proposed in the SHIWA European project that brings together four representative European workflow systems: ASKALON, MOTEUR, WS-PGRADE, and Triana. The proposed interoperability is realised at two levels of abstraction: At the concrete level, we propose a bundling technique that aggregates the abstract IWIR representation and concrete task representations to enable workflow instantiation, execution and scheduling. We illustrate case studies using two real-workflow applications designed in a native environment and then translated and executed by a foreign workflow system in a foreign distributed computing infrastructure. Currently, almost every scientific workflow development and execution system provides its own native input language designed to satisfy the needs of its specific target community. Workflow applications are specified in different systems at various levels of detail, sometimes hiding the underlying infrastructure, and sometimes exposing at least part of it. In most cases, however, workflow applications are hard-coded and therefore bound to the workflow system within which they have been developed. Running an existing workflow application in another system than the one in which it has been originally developed requires re-engineering and rebuilding it almost from scratch which is tedious and inefficient. This unfortunate situation makes the entire e-science workflow community fragmented, since sharing of existing workflow applications within and among domain-specific sciences to enhance synergies and reduce the time-to-solution is impossible.. Scientif ic workf lows represent the experiments conducted by scientists. These experiments are usually data and computation intensive and often contain relatively simple control-flows and rules. Scientific workflow languages are therefore mostly targeted at modelling the dataflow between the individual workflow activities with a strong focus on efficient data processing and scheduling of computational units [26] . We therefore call these languages data-f low oriented. Languages like AGWL [13] , GWENDIA [22] , gUSE [17] , SCUFL [20] and Triana Taskgraph [27] belong to the category of data-flow oriented scientific workflow languages.. Business workf lows, on the other hand, are usually targeted at modelling the control-flow between individual business activities and describe the processes inside and between enterprises with a strong focus on implementing complex business rules. In contrast to the requirements of most scientific workflows, business workflows usually require the support for process integrity which includes transactions, rollback mechanisms and audits [16] . Because of their focus on modeling the control-flow, we call these languages control-f low oriented.. While the business process community has generally accepted the standardised, control-flow oriented Web Services Business Execution Language WS-BPEL [16] as their workflow language of choice, it has not been adopted by the scientific workflow community The creation of a single standard language for all users of scientific workflow systems is a difficult undertaking that will probably not succeed in being adopted by all communities given the heterogeneous nature of their fields and problems to solve.. To address this difficult problem, we present in this paper the fine-grained interoperability (FGI) framework developed as part of the SHIWA (SHaring Interoperable Workflows for large-scale scientific simulations on Available DCIs) European project [4] that brings together four representative European workflow systems: ASKALON from the University of Innsbruck, MOTEUR from the French National Center for Scientific Research (CNRS), WS-PGRADE from the Computer and Automation Research Institute, Hungarian Academy of Sciences (MTA SZTAKI), and Triana from the Cardiff University. The proposed interoperability is realised at two levels of abstraction: abstract and concrete. At the abstract level, we propose a generic Interoperable Workf low Intermediate Representation (IWIR) sufficient for describing workflows at a lower level of abstraction that is only processed by the existing workflow systems and not directly exposed to the human developer. Such a common representation shall be used as a common bridge for translating workflows between different languages independent of the underlying Distributed Computing Infrastructure (DCI). At the concrete level, we propose a bundling technique that aggregates the abstract IWIR representation and concrete task representations to enable workflow instantiation, execution and scheduling.. Such a solution based on a simple and portable intermediate workflow representation has a number of advantages for the application developers relative to the current practice of proprietary workflow languages. First, it enables application developers to program applications using their favorite high-level workflow language and execute it on every DCI with an IWIR-enabled enactment engine. Second, it enables the application scientists to flexibly select the "best" enactment engine deployed on the "best" DCI infrastructure for running their workflows. This is usually a subjective decision that can only be answered by the scientists themselves, depending in part on the nature of experiment and the scientist's objectives (e.g. performance, reliability, cost). As an example, a workflow running with sensitive patient data may need to stay in a locally administered DCI to satisfy data privacy laws. Transferring the data to an external DCI would be against the law, therefore the workflow execution needs to be moved towards the data. Third, it enables runtime interoperability between different workflow systems. Sub-workflows, specified either by the end-user or selected dynamically by the workflow scheduler, can be transferred to, scheduled and executed in a different workflow system on-demand in the form of a common intermediate representation, which creates numerous optimization opportunities. Fourth, it is a generic solution, open to integration of new languages and workflow systems. Integrating a new workflow language able to execute on n DCI infrastructures requires the development of one front-end converter, while direct language-to-language translators require n frontend converters. Similarly, porting m interoperable workflows to a new DCI platform requires the development of one single IWIR-compliant backend converter, while direct language-to-language translations would require again m back-ends, one for each workflow system. Therefore a solution based on an intermediate language reduces the effort of porting m workflow systems onto n distributed platforms from m · n to m + n. This is an important step to make the development of new workflow systems for multiple existing DCI infrastructures economically viable.. The paper is organised as follows. The next section discussed the related work. Section 3 presents the general FGI architecture based on the abstract and concrete separation of concerns described in Sections 4 and 5. Section 6 presents the IWIR bundle technology for packaging the interoperable abstract and concrete workflow and task representations. Section 7 presents information about implementing the proposed framework in the four pilot workflow systems: ASKALON, MOTEUR, WS-PGRADE, and Triana. Section 8 discusses the differences between BPEL and IWIR, and shows why IWIR is a more promising choice for enabling portability and interoperability between scientific workflow systems. Section 9 validates the interoperability framework using two real-world applications translated and run across multiple workflow systems. Section 10 concludes the paper and presents ideas for future work. In this paper we presented the architecture designed in the EU FP7 SHIWA project [4] to support fine-grained interoperability (FGI) of scientific workflows. Our solution separates the interoperability concerns in two layers: abstract and concrete. At the abstract layer, we proposed a novel Interoperable Workflow Intermediate Representation (IWIR) designed to enable portability of workflows originally written in different languages across numerous scientific workflow systems. The common IWIR representation enables the translation of workflows among n systems with O(n) complexity and facilitates the integration of a new language into an IWIR-based interoperable environment with constant O(1) complexity. We have specified the IWIR language comprising atomic tasks, compound tasks including if, while, sequential for and parallel for statements, as well as different data types and data flow constructs to cover the abstract part of workflow applications. At the concrete layer, the interoperability is based on JSDL templates and the IWIR bundle concept designed for packaging concrete task representations (CTRs) and their invocation. To support integration of new workflow systems into the interoperability framework, we developed a number of tools including an IWIR tool for scanning, parsing and manipulating IWIR documents, an IWIR XML schema, an API to interact with IWIR bundles, and a JSDL template creator. We showed why the BPEL standard is not a good candidate in being used as an intermediate language to enable the interoperability of scientific workflow systems. We presented examples of using IWIR to model common data iteration strategies such as dot and cross product. We showed two realworld case studies using two workflow applications designed in a native environment, translated to the IWIR bundle format, and executed by a foreign workflow system in a foreign DCI. Additionally, we showed how workflow developers can employ the FGI architecture to cooperate, reuse, and share workflows across different, previously incompatible workflow systems and DCIs. FGI is currently successfully supported by the four pilot workflow systems that participate in the SHIWA project: ASKALON, MOTEUR, WS-PGRADE and Triana.. Planned future work includes support for a wider range of technologies for CTR representation, particularly virtual machine images for Cloud infrastructures. We also intend to create a repository for CTRs. This repository can be used to create a one-to-many mapping between abstract task types and concrete CTRs. An intended API that can be integrated into workflow systems or converters allows for more flexibility in scheduling and optimization at conversion time or even dynamically at runtime. Another area we want to target is research on data annotation, starting with a simple semantic-enabled system that helps to better describe data consumed and produced by the concrete task representations. Additionally, we work together with workflow communities and workflow system developers to identify open issues and evolve IWIR to provide support for future requirements. The idea of a single intermediate language is not unique and has been explored in other domains, for example by the UNiversal Computer Oriented Language (UNCOL) [11] proposed in 1958 by Melvin E. Conway as a solution for making compiler development economically viable.. The GNU Compiler Collections GIMPLE [19] is a very successful example of a single intermediate representation. The GNU Compiler Collection (gcc) provides front-ends for converting C, C++, Objective C, Fortran, Java, Ada and Go to the GIMPLE representation. Additionally, there are already frontends for Cobol, Pascal, Mercury, Modula-2, Modula-3, VHDL, PL/I and UPC. In the back-end, gcc provides support for over 30 different target architectures. Another example is Java bytecode [18] , which can be generated from a wide range of source languages including C and Java. Software components called Java Virtual Machines can then execute the Java Bytecode on a large number of different target architectures. Intermediate Languages have also been researched in the domain of languages targeting parallel computing, e.g. HSSM Intermediate Language HIL [28] , a universal intermediate representation for massively parallel software development.. Elmroth et al. present in [12] their investigations on interoperability aspects of scientific workflows, where they identify three different dimensions of the problem: model of computation, workf low language and workf low execution environment. They discuss the problems and chal-lenges of interoperability of scientific workflow based on these dimensions, mainly focusing on the differences between local workflows and Grid workflows. Their work is mostly a survey of the current situation of workflow interoperability and an analysis of the concepts and semantics of different kinds of workflow languages. Their long-term objective is to achieve logical workflow interoperability in all dimensions. While their work investigates problems related to direct conversion and compatibility between the end-user languages, we provide a solution based on an intermediate language, reducing the integration effort significantly.. The XML Process Definition Language (XPDL) [29] is an XML language used to interchange business process definitions between different business workflow systems and tools. It has been designed to exchange both graphical representation and semantics of a business process, with the focus on the graphical representation and human interactions. XPDL has been standardised in 1998 by the Workflow Management Coalition (WfMC). It is often used as a serialisation format for Business Process Model and Notation (BPMN) [21] and has been especially designed to represent all concepts present in a BPMN diagram. In contrast to XPDL, we focus on scientific workflows.. The idea of separating the abstract from the concrete part of a workflow, as we do in our work, is rather common in scientific workflow systems, and therefore often already familiar to our target audience. One example is Pegasus [9] , which is a framework for mapping scientific workflows onto distributed systems. It provides APIs for Java, Perl and Python for creating a DAX which is a description of an abstract workflow graph in XML format. In the DAX logical identifiers are used to reference files and jobs. On a DCI which utilises Pegasus the logical file identifiers are mapped to physical files using a Replica Catalog. A Transformation Catalog maps the logical task identifiers to executables also storing additional meta-information, while a Site Catalog tracks the compute resources of the DCI. Pegasus takes a DAX as input and uses the catalogs to create a concrete workflow that is executable on the DCI. Pegasus tries to achieve interoperability between different DCIs all running Pegasus by allowing workflow developers to specify abstract workflows which are then concretised on a given DCI. In contrast, our approach achieves interoperability between different workflow systems by providing means for the exchange of complete and partial workflows based on a commonly understood intermediate representation.. The interoperability scenario proposed in this paper is being researched and developed as part of the European FP7 SHIWA (SHaring Interoperable Workflows for large-scale scientific simulations on Available DCIs) [4] under the name of fine-grained workf low interoperability. The SHIWA project brings together four representative workflow systems: ASKALON from the University of Innsbruck, Moteur from the French National Center for Scientific Research (CNRS), WS-PGRADE from the Computer and Automation Research Institute, Hungarian Academy of Sciences (MTA SZTAKI), and Triana from the Cardiff University. The pilot applications come from the biomedical sciences and are provided by Charité-Universitätsmedizin Berlin and the Academic Medical Center of the University of Amsterdam. Additional pilot applications are provided by four subcontractors. The second interoperability scenario researched by the SHIWA project is the coarse-grain workflow interoperability referring to the capability of nesting existing off-the-shelf workflow applications as black-box sub-workflows to be included as part of larger meta-workflows. Figure 1 displays the schematic architecture of the targeted fine-grained interoperability framework. To qualify for fine-grained interoperability and be part of the proposed open interoperable framework, each workflow system will need to adjust its front-end to translate its source input language into the IWIR workflow representation. Once translated into this intermediate represen- We distinguish two parts of a workflow, corresponding to two levels of abstraction; abstract and concrete: We have implemented a number of tools to help developers to integrate their respective workflow systems into our proposed architecture and avoid duplicated efforts:. IWIR tool parses IWIR XML files and provides a Java object representation enabling traversal and manipulation of the workflow. We have created an XML schema for IWIR and implemented a Java-based toolset to support workflow system developers in generating and manipulating IWIR documents as required by their language translators. Additionally, the tool provides a simple API that enables easy and correct construction and serialisation of IWIR workflows as XML documents compliant to the schema. Parsing and evaluation of the IWIR conditional expressions is supported too. The tool is able to validate IWIR documents for correctness in their control flow, data flow, data types and syntax when parsing or creating IWIR documents; JSDL template creation tool takes as input a JSDL document and a corresponding IWIR task signature, analyses them and, with the help of the user, creates a JSDL template ready for inclusion in an IWIR bundle; IWIR bundle tool parses an IWIR bundle and provides a simple API to access all the contained data; IWIR bundle creation wizard guides the user through the manual creation of a workflow bundle, if full automation is not already provided by the workflow system integration. To achieve this, it will first ask the user for the IWIR document and parse it to obtain the contained IWIR task types. Then, it requests for every task type a JSDL template and the binaries to build the required CTRs. Finally, it requests for meta-data information like workflow name, description and dependencies, before creating a complete workflow IWIR bundle.. More information about these tools is presented in [24] . These tools have been employed by the four pilot workflow systems [13, 14, 17, 27 ] to create IWIR translation tools and interoperability plugins that fully integrate them (and their native languages) into our FGI architecture.

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