Discovery of optimal factors in binary data via a novel method of matrix decomposition We present a novel method of decomposition of an n × m binary matrix I into a Boolean product A • B of an n × k binary matrix A and a k × m binary matrix B with k as small as possible. Attempts to solve this problem are known from Boolean factor analysis where I is interpreted as an object-attribute matrix, A and B are interpreted as object-factor and factor-attribute matrices, and the aim is to find a decomposition with a small number k of factors. The method presented here is based on a theorem proved in this paper. It says that optimal decompositions, i.e. those with the least number of factors possible, are those where factors are formal concepts in the sense of formal concept analysis. Finding an optimal decomposition is an NP-hard problem. However, we present an approximation algorithm for finding optimal decompositions which is based on the insight provided by the theorem. The algorithm avoids the need to compute all formal concepts and significantly outperforms a greedy approximation algorithm for a set covering problem to which the problem of matrix decomposition is easily shown to be reducible. We present results of several experiments with various data sets including those from CIA World Factbook and UCI Machine Learning Repository. In addition, we present further geometric insight including description of transformations between the space of attributes and the space of factors. Reducing dimensionality of data by mapping the data from a space of directly observable variables into a lowerdimensional space of new variables is of fundamental importance for understanding and management of data. Classical methods such as PCA (principal component analysis), IDA (independent component analysis), SVD (singular value decomposition), or FA (factor analysis) are available for data represented by real-valued matrices, see e.g. [12, 21] . Non-negative matrix factorization [18] is an example of a method for decomposition of a constrained matrix into a product of constrained matrices. Namely, the constraint is that the matrix entries of both the input matrix and the output matrices are non-negative. For data represented by binary matrices, several methods have been proposed. Some of them are based on various extensions of the methods developed for real-valued matrices, see e.g. [19, 26, 27, 29, 33] and also [30] for further references. By and large, these methods yield a decomposition of a binary matrix into a product of possibly real-valued non-binary matrices which causes problems regarding interpretation, see e.g. [30] .. Directly relevant to our paper are methods which attempt to decompose a binary matrix I into A • B with • being the Boolean product of binary matrices defined by (1) . Early work on this topic includes [23, 24, 28] . These papers already contain complexity results showing hardness of problems related to such decompositions. Another source of information on composition and decomposition of binary matrices is a monograph on binary matrices [15] . These early works seem to be forgotten in the recent work on decompositions of binary matrices.. The recent work includes an approach using Hopfield-like associative neural networks which has been studied in a series of papers by Frolov et al., see e.g. [8] . This approach is a heuristic in which the factors correspond to attractors of the neural network. Little theoretical insight regarding the decomposition is used in this approach. In the introduction, the authors say [8, p. 698 ]: "However, there is no general algorithm for the analysis except a brute force search. This method requires an exponentially increasing number of trials as the dimension of the pattern space increases. It can, therefore, only be used when this dimension is relatively small." In this paper, we develop a theoretical insight which leads to quite an efficient algorithm for finding factors and matrix decompositions and which therefore eliminates the need for a brute force search mentioned in [8, p. 698] . [10] studies the problem of covering binary matrices with their submatrices containing 1s, which is relevant to our approach. Namely, as we note in Section 2.6, such a covering is equivalent to an approximation of a binary matrix by a Boolean product A • B from below. Another paper on this topic is [14] , where the authors proposed to use formal concepts as factors for the decomposition problem. [14] does not provide any theoretical insight and even does not say how formal concepts are to be used. Basically, it describes results of experiments with small data. [14] can be seen as the inspiration for our paper. We developed basic insight on the role of formal concepts for decompositions of binary matrices in our conference paper "R. Belohlavek, V. Vychodil: On Boolean factor analysis with formal concepts as factors, in: SCIS & ISIS 2006, Tokyo, Japan, pp. 1054-1059." The present paper is an extended version of this paper. [22] presents an algorithm for finding approximate decompositions of binary matrices into a Boolean product of binary matrices which is based on associations between columns of the matrix. [30] contains several remarks and experiments regarding the general question of dimensionality of binary data, including comparisons of various methods for decomposition of binary matrices into products of non-binary matrices. [31] looks at relationship between several problems related to decomposition of binary matrices. [20] discusses problems related to this paper, namely a problem of covering a binary matrix by so-called pertinent formal concepts which are formal concepts minimizing an entropy function associated to a classification problem discussed in that paper. Unfortunately, the algorithm presented in [20] is not described clearly enough for us to implement it and perform comparisons with our algorithms. In this section, we present several examples of factorization using Algorithm 1 and Algorithm 2.. Example 6. The first experiment concerns analysis of factors which determine attributes of European Union countries. We used data from the Rank Order pages of the CIA World Factbook 2006. 1 The data describe socio-economic indicators such as "GDP per capita," "energy production/consumption," "population growth," "military expenditures," "industrial production," etc. The indicators have numerical values. For instance, "GDP per capita" is measured in thousands USD. Using binarization, we transformed the data to a binary matrix consisting of 27 rows (EU countries) and 235 columns (yes/no attributes). For the binarization, we proceed as follows. For every socio-economic indicator y, we first compute its basic statistical characteristics (quartiles, sample mean, and standard deviation) of the corresponding sample given by the values on 27 EU countries. Then, we introduce five Boolean (yes/no) attributes based on these characteristics. In detail, for v being a numerical value of indicator y, we consider five Boolean attributes with values 1 (or 0) if the following conditions are (or are not) satisfied: B F representing a relationship between the factors and the original attributes. Note that the relationship between EU countries and the original attributes (described by I ) can be retrieved from the relationship between EU countries and factors (described by A F ) and the relationship between factors and original attributes (described by B F ) according to: Country x has attribute y iff there is a factor f such that f applies to x and y is one of the particular manifestations of f . The transformations between the 235-dimensional space of attributes and the 53-dimensional space of factors are accomplished by mappings g and h defined by (2) and (3).. Due to space limitations, we cannot list all the attributes and factors. Note however, that the factors have a natural interpretation providing us with an insight into the data. For instance, the largest factor applies to all the EU countries except for France, Germany, Italy, Netherlands, Spain, and UK. The manifestations of this factor in terms of the original attributes are attribute (d) for "GDP per capita" and attribute (d) for "oil import in bbl/day." Therefore, the verbal description of this factor ("GDP within two standard deviations of the mean and oil import within two standard deviations of the mean") has a clear meaning. Note that this factor does not apply to France, Germany, Italy, and UK due to their high GDP per capita, and does not apply to Netherlands and Spain due to their high oil imports. Namely, if we form a sequence x 1 , y 1 , . . . , x k , y k where x i and y i are the numbers of 1's covered by ith factor produced by Algorithm 1 and Algorithm 2, respectively, and if we plot the points x i , y i in a two-dimensional plot (a qq-plot), we can see that the points are gathered close to the diagonal. Fig. 3 shows this situation (the plot uses axes with a logarithmic scale).

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


Dominance hierarchies and social diversity in multi-agent systems In this study, we investigate self-organizing social hierarchies in multi-agent systems. Agents occupy the nodes of a smallworld network and interact exclusively with other agents in their local neighbourhood. Here, the interactions represent competition for a limited resource. Monte-Carlo simulations show that the changes in a network's structure can alter the steady-state attributes for fixed reward/penalty mechanisms. The results suggest that the expected phase transition from a homogeneous to a hierarchical society depends on: (a) the relative strengths of the feedback mechanisms employed, (b) the underlying communication topology, and (c) whether previously dominated agents are replaced in the population by agents with higher social status. A key contribution of this paper is the coherent picture painted of the relationship between social differentiation and spatial structure in a multi-agent system. Self-organizing hierarchies are a common phenomenon in many natural systems (eg. human culture, primates, insect Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. colonies and other animal groups) [5, 6, 7, 11] . A number of studies have suggested that social stratification is not a random process [1, 2, 5, 8] . Repeated interactions between individuals typically generate asymmetries in the "social status" of the population. Existing power relationships and domination enable some individuals or social sub-systems to take advantage of others. Conflicts amplify such differences, especially when "winner-loser effects" occur [5, 8] . That is, if the winners of previous conflicts are more likely to win future conflicts, and the losers of previous conflicts are less likely to win in the future.. Increasingly, agent-based models are being used to explore the basic principles underpinning emergent properties in complex systems. One study that has recently gained a great deal of attention is the minimalist agent-based model introduced by Bonabeau and co-workers [2] in order to explain social stratification in natural systems. The model was further refined by Stauffer and colleagues [18, 19, 20, 21, 22] , who introduced a feedback mechanism for determining the probability of an agent's rise or fall in the social hierarchy.. In the refined model (referred to as the B/S model), a population of agents diffuse across a regular lattice, where the carrying capacity of each site is one. Interactions between agents are restricted to the local neighbourhood. Consequently, agents must "fight" to gain control of (or occupy) a site. The outcome of the contest is determined by a function of the combatants' social status (or utility value). Winning agents are subsequently rewarded (increased utility), while the defeated agent is penalized (decreased utility). In addition, an agent's utility value decreases as a function of time. This relaxation mechanism may be thought of as a decline in social status due to inactivity.. As the number of interactions in the B/S model increases, the positive feedback mechanism amplifies small initial differences between individual agents and subsequently a heterogeneous social structure emerges. Monte-Carlo simulations have revealed a first-order phase transition between egalitarian societies for low densities and hierarchical societies for high densities, [2, 12, 19, 21] . This diversity originates as a consequence of agent experiences and their interaction with their environment.. A defining characteristic of the B/S model is the fact that the probability of interaction between agents was determined by the lattice topology and corresponding nearest neighbour (von Neumann neighbourhood) diffusion rule. However, work in the complex networks domain (eg. [9, 23] ) suggests that by varying the underlying network topology (connections between individuals), the social hierarchy that emerges may be significantly different [11, 15] . For example, Gallos [10] has examined the impact that scale-free networks have on the B/S model. Interestingly, it was reported that the expected phase transition in social diversity occurred at a very low population density (typically less than d = 0.1), decreasing towards zero as the network size increased.. In recent years, a number of studies have appeared examining the widespread presence of the so-called "smallworld" pattern of social, economic and technological networks (see [9, 23] for an overview). Small-world networks typically have a large overlap of neighbourhoods (clustering or groups of collaborators), and yet only relative short paths (node-to-node distance) connecting any two individuals in the network. These studies raise a number of questions, for example: What impact would various small-world topologies have on the emergent hierarchies? How do the environmental factors (reward mechanisms) shape the social hierarchy? At what population density does the expected phase transition from homogenous to heterogeneous social structure occur in small-world networks? Is it possible for lower-ranked individuals/groups to challenge the current social hierarchy?. In this study, we begin to address these questions. We extend the B/S model and investigate how the combination of Watts-Strogatz small-world interaction networks and alternative feedback mechanisms shape the emergent agent hierarchy. Here, the agents may not be aware of every other agent in the population. However, the assumption is that they do interact with a large number of agents. The spatial structure provides the basis for stable, repeated social interactions where an agent's relative social status may be different in alternative neighbourhoods. Our aim is to paint a coherent picture of the relationship between population density, spatial structure and social diversity in a multi-agent system. Specifically, we show that the transition point at which the population converges into dominance hierarchies is dependent upon the relative number of the short-range and long-range connections in the network.. The remainder of the paper is organized as follows: In the next section we describe our model in detail. The section starts with a description of the B/S model and a brief review of small-world networks. This is followed by the implementation details of the base network model and the dynamic hierarchy model. Computer simulation results are presented in the third section. In section 4, we discuss the findings in a more generic multi-agent system / self-organization context. The paper concludes with a summary and implications of this work as well as identifying future research directions. In this paper, we have investigated self-organizing social hierarchies using an agent-based model. The model consisted of a homogenous virtual world (represented by alternative small-world networks) inhabited by artificial agents. Interactions between agents -fights to gain control of a resource / occupy sites in the network -represent self-reinforcing dominance mechanisms, which amplify differences between agents leading to a heterogeneous population.. Our simulation results show that by altering the underlying interaction links, the critical population density at which the society jumps from a homogenous society to a hierarchical society also changes. As the level of "randomness" increases, the critical density generally decreases. However, the magnitude of this threshold value depends on the relative strengths of the reward mechanisms. We have also examined a scenario where perturbations were introduced into the stratified system. Here, an agent clone, randomly selected from the local neighbourhood, replaced the nominated oppressed agents. Similar patterns in diversity were observed in the dynamic hierarchies, however, the critical population density at which the transitions occurred was significantly higher.. The multi-agent system examined here is an abstraction and simplification of a natural system. However, it does provide a framework for investigating the hierarchies observed in social organizations as well as in technological networks. Understanding the kinds of behaviour observed in such complex systems may pave for the way for the engineering of large-scale, self-organizing autonomous agent applications. The notion of interactions, which allows agents to find each other and then compete for a limited resource is a central point for the design of many multi-agent applications. Typically, the agents are autonomous entities and the repeated, constrained interactions between agents may result in self-organizing behaviour. That is, rich and complex global (macroscopic) properties can emerge from purely local (microscopic) interactions [5] .. In this study, we have investigated dominance hierarchies and social diversity in a multi-agent system. Here, we have restricted the decision making capabilities of agents to relatively simple behaviours. An agent's social status represents an individual's overall ability to control or influence other agents. Our aim was to show how the "life experiences" of the agents and the interaction network impact on the transition between homogenous and hierarchical societies. density (d) . Here, the cull threshold was set to 4. Once again, the loosing penalty f was set to 1. The curves have been included to help differentiate between the different networks.. Self-organization does not happen automatically in any multi-agent systems. The emergence of self-organization must take into account the dynamic interactions among individual agents and between these agents and the environment. Two basic mechanisms must be exploited -positive and negative feedback -for the agent population to selforganize [5] . Positive feedback consists of the amplification of some properties of the system that emerge from the random interactions between the individual components. In our model, this represents the reward allocated to agents for winning the contest to occupy a node in the network. Where as negative feedback acts as a regulatory mechanism, which exhausts the resources of the system. The time relaxation of an agent's social status serves this role in our model.. In the base network model, alternative social communication links based on small-world networks were introduced into the B/S model. The simulation results support the notion of a correlation between the hierarchical differentiation (measured by the σ value) and the population density. Each simulation trial started from random meetings between equivalent individuals, yet a differentiated social structure emerged (as measured by σ). The trade-off between the positive and negative feedback mechanism guided the trajectory of the population. Specifically, we have shown how the unequal distribution of the social capital creates a system of stratification. That is, in the event of a contest, individuals higher up the "pecking order" have a greater probability of gaining control of the resources. Agents with similar utility values occupy specific levels in the hierarchy, and this rank order of social status typically remains fixed over a number of iterations. In economic terms, there is a corresponding level of social capital attached to a specific spatial structure.. Significantly, the critical density value tended to decrease as the level of disorder (measured by the λ value) increased for particular combinations of feedback mechanisms. This was particularly the case when the penalty for losing was greater than the reward for winning. However, when the pay-off values were the same, mid-range λ values tended to lead to even smaller transition critical density values. The restricted local neighbourhood topology forces individuals to interact, even at low densities. This suggests that the combination of pair wise interactions within local neighbourhoods and a limited number of long-range connections may in fact facilitate hierarchical control structures more readily.. We have also examined a scenario where agents with low social status were replaced. The substitute agents were randomly selected from the local neighbourhood. This update scheme reduces the relevant dominance levels of agent of higher social status, possibly leading to contest successes for the lower ranked agents, which in turn tends to equalize the social status of the population. This particular configuration provided the means for new hierarchies -revolutionaries -to emerge. Similar trends in the phase transition of social diversity were observer for alternative small-world networks. However, the transition critical density levels were a lot higher than the corresponding standard model. Analysis of the power distributions revealed significant difference in the number of agents with similar social status for differing reward/penalty combinations. Here, the small perturbations to the population structure affected the balance between the positive and negative feedback mechanisms, resulting in a significant increase in the population density level required to induce a phase transition in social structure.. For any multi-agent system, specifying the organisational structure is an essential first step in determining the interaction requirements. The identification of an agent's goals and roles within the system as a whole must be considered. For many systems, specialists and generalists agents may be pre-defined. While agent-based technologies provide a way to conceptualise large interconnected complex systems, centralized management techniques are not always appropriate and/or feasible. In contrast, decentralized and distributed management enables greater flexibility and robustness as resources are managed across many nodes in the network. For example, agent-based resource management systems for Grid computing or sensor network applications may require the agent to be organized into a hierarchy and to cooperate with each other to complete a complex task. For systems where adaptability is important, the social status of individual agents could be used to help forge alliances or coalitions and streamline negotiations between agents.. Recently, there has been increased interest in developing Self* systems [14] . That is, systems that exhibit self organization, self management, self configuration and self repair. While this aim may appear to be grandiose, there has been significant work reporting aggregation and coordination of tasks in the robotics domain [16, 17] . Successful applications of agent-based models, inspired by social insects have also been reported in limited domains (eg. [3, 4] ). From an engineering point of view, a key advantage of self-organization models is the fact that the designer does not need to divide the desired behaviour into simple basic behaviours. In future work, we will look more closely at relevant environmental parameters and investigate the population dynamics as the agents learn from new experiences. In doing so, we hope to increase understanding of how to engineer agentbased self-organization applications on a large scale.

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


Signal-path driven partition and placement for analog circuit Abstract-This paper advances a new methodology based on signal-path information to resolve the problem of device-level placement for analog layout. This methodology is mainly based on three observations: thinking of hierarchical design for analog, structural feature of circuit based on signal-path, requirements of matching/symmetry constraint and the reduction of parasitics. The thinking of hierarchical design makes the whole analog circuit divided into core-circuit and bias-circuit. So, the algorithm is designed as two independent steps: core-circuit is placed firstly, and then bias-circuit. The structural feature of circuit based on signal-path and the requirement of matching/symmetry constraint decide the placement pattern of core-circuit. The reduction of parasitics requires the algorithm to select the optimal variants to realize the placement. Experimental results demonstrate that this algorithm can generate the compact layout with high performance and it is universal and effective. Nowadays, SOC integrates all of the circuits on one chip, including digital and analog parts. The physical design of digital circuits is automated to a large extent but the layout of analog circuits is still a manual, time-consuming and error-prone, which makes custom analog layout be a bottleneck in the mixed-signal design flow. The fast changes of demands in ASIC market also require analog layout automation tool to accelerate the whole design process. Thus, the time from product demands to market can be greatly shortened. Analog placement is a vital step in the design flow from circuit schematics to layout. Analog placement automation tool must not only provide a good rectangle packing functionality, but also satisfy analog specifications. Mismatch and parasitics induced by the layout are the most important factors to affect the performance of analog circuit.In the past two decades, researches have done many researches about analog placement, but no successful commercial products have existed. Generally speaking, the existing methodologies for analog placement automation can be classified into the following several categories.The constructive placement techniques, which adopts the increase placement thinking that one module is selected at a time and positioned in the best available location, which is calculated by an evaluation function or directed by an expert system. A placement tool based on expert knowledge is developed in well with the problem size, but the final placement can be poor because there are no effective methods to decide the order of modules and the view of global optimization and the costs of supporting expert system are expensive.A placement technique iteratively combining min-cut partitioning and force-directed placement (FDP) has been employed in an interactive environment for full-custom designs [2]. This method can fast obtain a feasible placement solution satisfying geometrical constraints but not ensure that the placement is a good placement.Nowadays, the simulated annealing This paper advances a novel methodology of signal-path driven partition and placement for analog circuit, which can automatic generate a compact placement with high performance from a circuit schematics based on signal-path information. The methodology is mainly based on three observations: thinking of hierarchical design for analog circuit, structural feature of circuit based on signal-path, requirements of matching/symmetry constraint and the reduction of parasitics. The above heuristic information about circuit make solution space greatly decreased. This paper is organized as follows. Section II will give some necessary definitions and the algorithm of signal-path driven circuit partition for analog circuit. Section III will analyze foundation why this methodology can direct placement of core-circuit and then present the algorithm of core-circuit placement in details. Section IV will present the Nowadays, SOC integrates all of the circuits on one chip, including digital and analog parts. The physical design of digital circuits is automated to a large extent but the layout of analog circuits is still a manual, time-consuming and error-prone, which makes custom analog layout be a bottleneck in the mixed-signal design flow. The fast changes of demands in ASIC market also require analog layout automation tool to accelerate the whole design process. Thus, the time from product demands to market can be greatly shortened. Analog placement is a vital step in the design flow from circuit schematics to layout. Analog placement automation tool must not only provide a good rectangle packing functionality, but also satisfy analog specifications. Mismatch and parasitics induced by the layout are the most important factors to affect the performance of analog circuit.. In the past two decades, researches have done many researches about analog placement, but no successful commercial products have existed. Generally speaking, the existing methodologies for analog placement automation can be classified into the following several categories.. The constructive placement techniques, which adopts the increase placement thinking that one module is selected at a time and positioned in the best available location, which is calculated by an evaluation function or directed by an expert system. A placement tool based on expert knowledge is developed in [1] . These methods are very fast, and scales well with the problem size, but the final placement can be poor because there are no effective methods to decide the order of modules and the view of global optimization and the costs of supporting expert system are expensive.. A placement technique iteratively combining min-cut partitioning and force-directed placement (FDP) has been employed in an interactive environment for full-custom designs [2] . This method can fast obtain a feasible placement solution satisfying geometrical constraints but not ensure that the placement is a good placement.. Nowadays, the simulated annealing [3] and genetic algorithms [4] , which are global and stochastic optimization algorithms, are the most effective engines to solve the analog placement problem. There is no mathematical limit for the solution space of the problem and the cost function. Analog constraints can be easily implemented by adding the extra punishment items in the cost function. ILAC [5] , KOAN/ANAGRAM II [6] , PUPPY-A [7] and LAYLA [8] all adopt these optimization algorithms. But these methods all adopt absolute coordinate to represent placement and explore an extremely large search space including feasible and unfeasible placement solutions.. Analog placement method based on topological representations, which still adopts the optimization engines of SA or GA. Topological representations are used to describe the placement, such as BSG [9] , SP [10] , CBL [11] . Solutions in search space expressed by topological representations are all feasible, so this solution space is much smaller than that represented by absolute coordinate. In [12] , the analog constraint of matching/symmetry is realized by the topological representation, which further reduces the solution space. But, from the analysis of solution space in [9] , [10] , [11] and [12] , we can find these solution spaces are still very big and [12] only considers the symmetry constraint.. This paper advances a novel methodology of signal-path driven partition and placement for analog circuit, which can automatic generate a compact placement with high performance from a circuit schematics based on signal-path information. The methodology is mainly based on three observations: thinking of hierarchical design for analog circuit, structural feature of circuit based on signal-path, requirements of matching/symmetry constraint and the reduction of parasitics. The above heuristic information about circuit make solution space greatly decreased. This paper is organized as follows. Section II will give some necessary definitions and the algorithm of signal-path driven circuit partition for analog circuit. Section III will analyze foundation why this methodology can direct placement of core-circuit and then present the algorithm of core-circuit placement in details. Section IV will present the algorithm of bias-circuit placement. In the last section, we will illustrate some layouts generated by the algorithm according to the industrial circuit schematics.

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


A polynomial parametrization of torus knots For every odd integer N we give explicit construction of a polynomial curveOur proof makes use of the theory of Stieltjes series and Padé approximants. This allows us an explicit polynomial parametrization of the torus knot K 2,2n+1 with degree (3, 3n + 1, 3n + 2). Let N be an odd integer. We look for a parametrized curve C(t) = (x(t), y(t)) of minimal lexicographic degree such that C has exactly N crossing points (see Fig. 1 ), corresponding to parameters (s i , t i ) such that. Here we look for curves with deg x = 3. As a consequence of Bézout theorem, we have deg y ≥ N + 1. We have translated this problem into a problem on real roots of certain real polynomials in one variable. In [4] we proved that if N > 3, there is (3, 19) in logarithmic scale in y no solution with deg y = N + 1. We have computed the first examples and we have shown that the minimal degrees are deg y = N + 1 + 2 N 4 for N = 3, 5, 7. The purpose of this paper is to give an explicit construction at any order of such curves with deg y = N + 1 + 2 N 4 . In Sect. 2, we first recall some properties of the Chebyshev polynomials. Our construction is based on certain relations in the space spanned by some of these polynomials.. The explicit construction is given in Sect. 3 . It involves some particular polynomial basis whose existence is proved in Sect. 5 .. We will show that the algebraic relation between cos 2θ and cos 6θ may be seen as a Stieltjes series, namely some algebraic hypergeometric function. We will recall some properties of these functions and their approximations by rational functions, the so-called Padé approximants.. In Sect. 4, we give explicit parametrizations of degrees (3, 3n + 1, 3n + 2) for the torus knots K 2,2n+1 (see [1, [4] [5] [6] ). They are symmetric with respect to the y-axis and of smaller degrees than those already known. We have shown in this paper the existence of plane polynomial curves of degree (3, N + 2 N 4 + 1) having the required properties. We think that they are of minimal lexicographic degrees (it is true for N = 3, 5, 7, 9) . This question is related to the following question: where are the real zeros of polynomials in vect (V k , k ≡ 2 [mod 3])?. We guess that such polynomials cannot have too many zeroes in [−1, 1]. It would give a lower bound for the degrees of the torus knots approximation by polynomial curves.. We have not given explicit formulas for our polynomials. We have just shown that they can be found by solving some explicit linear system. In a near future, we hope we will be able to give explicit function of the degree N .

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


Volume Consistency in a Staggered Grid Lagrangian Hydrodynamics Scheme Staggered grid Lagrangian schemes for compressible hydrodynamics involve a choice of how internal energy is advanced in time. The options depend on two ways of defining cell volumes: an indirect one, that guarantees total energy conservation, and a direct one that computes the volume from its definition as a function of the cell vertices. It is shown that the motion of the vertices can be defined so that the two volume definitions are identical. A so modified total energy conserving staggered scheme is applied to the Coggeshall adiabatic compression problem, and now also entropy is basically exactly conserved for each Lagrangian cell, and there is increased accuracy for internal energy. The overall improvement as the grid is refined is less than what might be expected.

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


The Complexity of Weighted Boolean #CSP with Mixed Signs We give a complexity dichotomy for the problem of computing the partition function of a weighted Boolean constraint satisfaction problem. Such a problem is parameterized by a set Γ of rational-valued functions, which generalize constraints. Each function assigns a weight to every assignment to a set of Boolean variables. Our dichotomy extends previous work in which the weight functions were restricted to being non-negative. We represent a weight function as a product of the form (−1) s g, where the polynomial s determines the sign of the weight and the non-negative function g determines its magnitude. We show that the problem of computing the partition function (the sum of the weights of all possible variable assignments) is in polynomial time if either every function in Γ can be defined by a "pure affine" magnitude with a quadratic sign polynomial or every function can be defined by a magnitude of "product type" with a linear sign polynomial. In all other cases, computing the partition function is FP #P -complete. The principal result of this paper is a dichotomy theorem for the complexity of computing the partition function of a weighted Boolean constraint satisfaction problem. This problem has a set of functions Γ that are used to assign a weight to any configuration, where a configuration is an assignment of values to the instance's variables. These functions generalize constraint relations in the classical constraint satisfaction problem (CSP), which corresponds to the case where all functions in Γ have range {0, 1}. The problem we consider here is to compute the partition function of a given instance of weighted CSP; that is, the sum of weights of all configurations. Computing the partition function generalizes the problem of counting the number of satisfying solutions of a CSP. We denote by #CSP(Γ) the problem of computing the partition function of weighted CSP instances which use functions from the set Γ.. The term "partition function" originates in statistical physics, and certain problems from statistical physics may be expressed as weighted CSPs. For example, the Potts model [22] can be expressed as a weighted CSP, whereas only the "hard core" version can be expressed as a classical CSP. The two possible hard core versions of the Potts model correspond to graph colouring, in the so-called antiferromagnetic case, and the trivial problem of colouring each component of a graph with a single colour, in the so-called ferromagnetic case.. Here, we extend the work of Dyer, Goldberg and Jerrum [8] , who gave a dichotomy for the complexity of #CSP(Γ) when every function in Γ is restricted to have non-negative values. They defined two classes of functions, those that are "pure affine" and those of "product type", and showed that #CSP(Γ) is in FP if, and only if, every function in Γ is pure affine or every function is of product type. Otherwise #CSP(Γ) is complete for FP #P . The existence of algorithms for testing the properties of being purely affine or of product type means that the dichotomy is decidable.. The contribution of this paper is a dichotomy theorem for #CSP(Γ), where Γ is allowed to contain function which give values of either sign. Specifically, #CSP(Γ) is either in FP or is FP #P -complete. As in the nonnegative case, the dichotomy is decidable.. This extension is of particular interest because functions having mixed signs can cause cancellations in the partition function, which may make it easier to compute. Many natural problems can be expressed as weighted #CSP problems with functions of mixed signs. For example, if f is a binary function, an instance I of #CSP({f }) corresponds to a graph G I where each variable of I is a vertex and each constraint corresponds to an edge. There is a binary function f : {0, 1} 2 → {−1, 1} such that the partition function of #CSP({f }) counts the number of subgraphs in G I that have an even number of edges -see the examples in Section 1.3 for details. Bulatov's counting dichotomy [1] can be extended to weighted #CSP as long as the range of every function f ∈ Γ is Q 0 (the set of non-negative rationals) [2] . However, it is not known whether it extends to weighted #CSP with functions of mixed signs. Furthermore, there is currently no algorithm known that determines whether #CSP(Γ) is in FP or FP #P -complete, given a constraint language Γ. For the special case of graph homomorphisms, an effective dichotomy is known for functions of mixed signs [12] . There is also a dichotomy theorem by Dyer et al. for Boolean weighted #CSP for functions that are non-negative [8] . This is expressed in terms of two classes of functions, pure affine and product type, which we define in Section 2. There exist algorithms that test whether a Boolean constraint language Γ is pure affine or of product type. This means that the dichotomy is effectively decidable.. The contribution of this paper (Theorem 9 below) extends Theorem 1 to constraint languages Γ containing arbitrary rational-valued functions. This is an interesting extension since functions with negative values can cause cancellations and may make the partition function easier to compute. 1 Independently, Cai, Lu and Xia have recently found a wider generalization, giving a dichotomy for the case where Γ can be any set of complex-valued functions [4] .. The case of mixed signs has been been considered previously by Goldberg, Grohe, Jerrum and Thurley [12] , in the case of one symmetric binary function on an arbitrary finite domain. Their theorem generalizes that of Bulatov and Grohe [3] for the non-negative case. Goldberg et al. [12] give two examples, which can also be expressed as Boolean weighted #CSP, and fall within the scope of this paper. The first appeared as an open problem in [3] . The complexity of these problems can be deduced from [12] and from the results of this paper.. Example 2. The first example in [12] is the function f : {0, 1} → {−1, 1}, where. An instance I of #CSP(f ) can be represented by a graph G = (V, E) with n vertices. (In fact the argument remains the same even in the case where G is a multigraph with self-loops.) The set of variables in I is V and, for each edge (u, v) ∈ E, we have the constraint f (u, v) in I. Then Hence, up to a simple transformation, the partition function Z(G) counts induced subgraphs with an even number of edges. To see this, observe that for every configuration σ, the term (u,v)∈E f (u, v) is 1 if the subgraph of G induced by σ −1 (1) has an even number of edges and −1 otherwise. In terms of our Theorem 9 below, f (x, y) = (−1) xy , so this problem is in FP, and an algorithm for computing Z(G) follows from Lemma 10 below.. Example 3. The second example in [12] is #CSP(f ), where. In terms of Theorem 9 below, f (x, y) = (−1) x+y , so this problem is also in FP. This can easily be shown directly. Let G = (V, E) be a graph with n vertices. Note that Z(G) is unchanged by removing any circuit from G. Thus we may reduce G to a forest F , which will have edges if, and only if, G was not Eulerian. If F has no edges, then. Otherwise F has at least one leaf vertex v, and then we have. , and hence the problem is trivially in FP.

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


Reduced-Memory Direct Digital Frequency Synthesizer Using Parabolic Initial Guess Abstract. Based on the parabolic approximation, which was recently introduced by the authors, a new architecture for sine-output direct digital frequency synthesizers has been developed. Due to using this approximation, and also considering several memory-reduction techniques, the proposed architecture is so designed that needs only 728 bits read-only memory for mapping a 12-bit phase address to 10-bit sine amplitude. The synthesizer has also been implemented and the experimental results show its desired operation and performance. Direct digital frequency synthesizers (DDSs or DDFSs) are increasingly welcomed in modern communication systems and precise electronic systems, due to their significant advantages over phase-locked loop (PLL)-based synthesizers. A simplified block diagram of a sine-output DDS is shown in Fig. 1 .. However there are several methods for phase to sine-amplitude conversion [1] , but due to the difficulties in calculating the sine function, sine computation in DDSs is typically performed by ROM-based lookup tables. In this technique, increasing the number of memory locations and also the length of memory words can improve the frequency and amplitude resolution, but larger ROM size means higher power consumption and lower speed. For this reason, different memory-compression techniques have been reported in the literature in order to decrease ROM size while keeping the frequency resolution and spectral purity undegraded.. As a successful approach, in each instant of time an initial guess for the sine amplitude can be produced by using digital hardware. Then, the difference between the initial guess and the accurate value of the sine amplitude, which has been already stored in the associated memory location, can be used to correct it. If the initial approximation is properly performed, in each memory location just small correcting data will be stored instead of the whole amplitude. It is obvious that the closer approximation to the ideal sine function, the more memory-wordlength shortening.. • The simplest implementation of this idea is to use the value of phase as the initial guess. This method, which is called "sine-phase difference" technique, saves 2 bits of memory word length [2] [3] [4] [5] .. • Another similar work implementing the above idea is a double trigonometric approximation, devised by Yamagishi et al. [6] , which has led to a memory word length reduction of 3 bits.. • The closest initial guess to the target sinusoid is obtained by using parabolic approximation, which has been recently introduced by the authors [7, 8] and saves 4 bits of memory word length. Figure 2 shows the general concept of these three initial guesses.. This paper deals with the development and implementation of a novel architecture for sine-output direct digital frequency synthesizers based on the parabolic approximation.

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


0-Hecke algebra actions on coinvariants and flags By investigating the action of the 0-Hecke algebra on the coinvariant algebra and the complete flag variety, we interpret generating functions counting the permutations with fixed inverse descent set by their inversion number and major index.Résumé. Enétudiant l'action de l'algèbre de 0-Hecke sur l'algèbre coinvariante et la variété de drapeaux complète, nous interprétons les fonctions génératrices qui comptent les permutations avec un ensemble inverse de descentes fixé, selon leur nombre d'inversions et leur "major index". A composition I of an integer n gives rise to a descent class of permutations in the symmetric group S n ; the cardinality of this descent class is known as the ribbon number r I and its inv-generating function is the q-ribbon number r I (q). Reiner and Stanton [15] defined a (q, t)-ribbon number r I (q, t), and gave an interpretation by representations of S n and GL(n, F q ).. Our main object here is to obtain similar interpretations of various ribbon numbers by representations of the 0-Hecke algebra H n (0) of type A. Norton [14] decomposed H n (0) into a direct sum of 2 n−1 distinct indecomposable H n (0)-submodules M I indexed by compositions I of n. Consequently every indecomposable projective H n (0)-module is isomorphic to M I for some I, and every simple H n (0)module is isomorphic to C I = top(M I ) = M I /rad M I for some I.

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


Type inference for record concatenation and subtyping Record concatenation, multiple inheritance, and multiple-object cloning are closely related and part of various language designs. For example, in Cardelli's untyped Obliq language, a new object can be constructed from several existing objects by cloning followed by concatenation; an error is given in case of field name conflicts. Type systems for record concatenation have been studied by Wand, Harper and Pierce, Remy, and others; and type inference for the combination of record concatenation and subtyping has been studied by Sulzmann and by Pottier.In this paper we present a type inference algorithm for record concatenation, subtyping, and recursive types. Our example language is the Abadi-Cardelli object calculus extended with a concatenation operator. Our algorithm enables type checking of Obliq programs without changing the programs at all. We prove that the type inference problem is NP-complete. Type inference with record concatenation, subtyping, and recursive types is NP-complete. Future work includes implementing the algorithm for a language such as Obliq, and to attempt to combine our technique with our algorithm for type inference with both covariant and invariant fields [16] . The construction used in our NP-hardness proof may be applicable to other types systems. In particular, our notion of simple constraint systems may be reducible to even more restrictive type inference problems than the one we have considered. at LICS'02, IEEE Symposium on Logic in Computer Science, July 2002. In that version of the paper, we mistakenly claimed that the type inference problem can be solved in polynomial time. Two reviewers for Information and Computation spotted a problem in the proof of a crucial lemma. The lemma was indeed false and, as a consequence, we realized that the type inference problem is NP-complete, and not polynomial. We thank the reviewers for identifying that problem and for numerous other helpful comments.. Our work is supported by a National Science Foundation Faculty Early Career Development Award, CCR-9734265. In Cardelli's untyped Obliq language [4] , the operation clone(a 1 , . . . , a n ) creates a new object that contains the fields and methods of all the argument objects a 1 , . . . , a n . This is done by first cloning each of a 1 , . . . , a n , and then concatenating the clones. An error is given in case of field name conflicts, that is, in case at least two of a 1 , . . . , a n have a common field. Cardelli notes that useful idioms are:. clone(a, {l : v}). to inherit the fields of a and add a new field l with initial value v, and:. clone(a 1 , a 2 ). to multiply inherit from a 1 and a 2 . Obliq's multiple-object cloning is an instance of the idea of concatenating two records of data. In a similar fashion, languages such as C++ [22] and Borning and Ingalls' [3] version of Smalltalk allow multiple inheritance of classes.. In this paper we focus on languages such as Obliq where concatenation is a run-time operation and where a field name conflict is considered an error; such concatenation is known as symmetric concatenation. There are several ways of handling field name conflicts. One idea is to do run-time checking, and thereby add some overhead to the execution time. Another idea, which we pursue here, is to statically detect field name errors by a type system. The main challenge for such a type system is to find out which objects will eventually be concatenated and give them types that support concatenation.. Type systems for record concatenation have been studied by Wand [25] , Harper and Pierce [8] , Remy [20] , Shields and Meijer [21] , Tsuiki [24] , Zwanenburg [27, 28] and others. These type systems use ideas such as row variables, present-fields and absent-fields, type-indexed rows, second-order types, and intersection types. More recently, Sulzmann [23] and Pottier [19] have studied type inference with the combination of record concatenation and subtyping. None of these algorithms are, as far as we are aware, known to run in polynomial time.. In this paper we investigate the idea of using variance annotations [17, 1] together with subtyping and recursive types as the basis for typing record concatenation. Following Glew [7] , we will use two forms of record types. The variance annotation 0, as in. denotes that records of that type can be concatenated, and that subtyping cannot be used. The variance annotation →, as in. denotes that records of that type cannot be concatenated, and that subtyping can be used. For example, if we have where ⊕ is the symmetric concatenation operation on record types which is only defined when the labels sets are disjoint and the two types both have the variance annotation 0. The idea is that if an object has type [l i : t i ] 0 , then we know exactly which fields are in the object, and hence we know which other fields we can safely add without introducing a field name conflict. The more flexible types [ i : B i∈1..n i ] → can be used to type objects that will not be concatenated with other objects.. We restrict our attention to width-subtyping for types with variance annotation →, and we allow subtyping from variance annotation 0 to →. Going from 0 to → is in effect to forget that a record of that type can be concatenated with other records. Our type system is simpler and less expressive than some previous type systems for record concatenation. Our goal is to analyze the computational complexity of type inference. That complexity may well be less than the complexity of type inference for some of the more expressive type systems.

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


Hybrid real-coded mutation for genetic algorithms applied to graph layouts In this paper we introduce an application of real-coded genetic algorithms to the problem of consistent graph layout and exploring the role of mutation for this particular problem. We introduce several forms of mutation, some of which being specific to this problem, and show that the choice of this operator can have a great impact on the performance of the algorithm. The mutation has always played an important role for the genetic algorithms and its role is of clear interest. The mutation rate is usually kept low, a generally accepted heuristic being one over the chromosome length [5] .. In the natural living systems, we can speculate that the rapid evolution of some organisms may be in part attributed to mutations which are not totally random, but favor changes that increase the fitness of the organism. In this paper we present a system in which the mutation can take various forms, some of which are based on heuristics using domainspecific knowledge that are likely to improve the individual's fitness. We are interested in the impact of the various mutation forms on the achieved fitness.. The problem we focus on is building consistent graph layouts for weighted graphs and requires a real gene encoding. Given a weighted graph, we must derive a spatial representation of the graph (a layout) such that the distances between the vertices are consistent with the weight of the edges. Extensive work has been accomplished on drawing unweighted graphs [4] . The best-known heuristic for generating graph layouts is certainly the spring algorithm [2] .. We found that a real-encoded genetic representation is appropriate for the graph layout problem and this also gives us more flexibility regarding the mutation operator. Several real-encoded models for genetic algorithms have been proposed [3] . Our focus is on the mutation operator under these conditions. In this paper we have introduced a real-coded genetic algorithm applied to the consistent graph layout problem. The focus of this study has been the mutation operator, for which the real encoding of the chromosomes provides more choice than in the binary case.. The experiments have shown that the choice of the mutation operator can have a large impact on a real-encoded genetic algorithm. Thus, the uniform and mirror mutation show a similar performance, the percentage mutation constitutes an improvement over them, and the two problemspecific mutations have shown a substantially better performance than the general purpose operators.

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


Application-Directed Voltage Scaling Abstract-Clock (and voltage) scheduling is an important technique to reduce the energy consumption of processors that support voltage scaling. It is difficult, however, to achieve good results using only statistics from the operating system level when applications show bursty (unpredictable) behavior. We take the approach that such applications must be made power-aware and specify their average execution time (AET) and the deadline to the scheduler controlling the clock speed and processor voltage. This paper describes our energy priority scheduling (EPS) algorithm supporting power-aware applications. EPS orders tasks according to how tight their deadlines are and how often tasks overlap. Low-priority tasks are scheduled first, since they can be easily preempted to accommodate for high-priority tasks later. The EPS algorithm does not always yield the optimal schedule, but has a low complexity. We have implemented EPS on a StrongARM-based variable-voltage platform. We conducted experiments with a modified video decoder that estimates the AET of each frame. Measurements show that application-directed voltage scaling reduces processor power consumption with 50% for the bursty video decoder without missing any frame deadlines.Index Terms-Adaptive software, low power, power awareness, voltage scaling. To demonstrate the effectiveness of application-directed clock scheduling we have performed power measurements on a complete system consisting of variable-voltage hardware, OS driver, clock scheduling daemon and algorithm, and power-aware video decoder.

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


Rendering from compressed high dynamic range textures on programmable graphics hardware High dynamic range (HDR) images are increasingly employed in games and interactive applications for accurate rendering and illumination. One disadvantage of HDR images is their large data size; unfortunately, even though solutions have been proposed for future hardware, commodity graphics hardware today does not provide any native compression for HDR textures.In this paper, we perform extensive study of possible methods for supporting compressed HDR textures on commodity graphics hardware. A desirable solution must be implementable on DX9 generation hardware, as well as meet the following requirements. First, the data size should be small and the reconstruction quality must be good. Second, the decompression must be efficient; in particular, bilinear/trilinear/anisotropic texture filtering ought to be performed via native texture hardware instead of custom pixel shader filtering.We present a solution that optimally meets these requirements. Our basic idea is to convert a HDR texture to a custom LUVW space followed by an encoding into a pair of 8-bit DXT textures. Since DXT format is supported on modern commodity graphics hardware, our approach has wide applicability. Our compression ratio is 3:1 for FP16 inputs, allowing applications to store 3 times the number of HDR texels in the same memory footprint. Our decompressor is efficient and can be implemented as a short pixel program. We leverage existing texturing hardware for fast decompression and native texture filtering, allowing HDR textures to be utilized just like traditional 8-bit DXT textures. Our reduced data size has a further advantage: it is even faster than rendering from uncompressed HDR textures due to our reduced texture memory access. Given the quality and efficiency, we believe our approach suitable for games and interactive applications. HDR images are gaining popularity in games and interactive applications, as both sources of illumination and intermediate results in multi-pass rendering. However, due to their range, HDR images need to be stored as 16-bit or 32-bit floating point textures, taking 2 to 4 times the amount of storage with respect to traditional 8-bit textures. This not only causes storage issues on commodity graphics hardware often equipped with limited texture memory, but also incurs significant performance penalties caused by poorer texture cache coherence and more memory bandwidth consumption.. Unfortunately, current graphics hardware only supports compression of 8-bit textures, and to our knowledge there exists no suitable compression technique for floating-point HDR textures on current generation graphics hardware. This makes the size disparity even bigger between compressed 8-bit and uncompressed HDR textures. Recently, various extensions have been proposed for supporting compressed HDR textures on graphics hardware [Munkberg et al. 2006; Roimela et al. 2006] . However, these solutions are not immediately available, as the proposed extensions are not part of current (DX9) or even future (DX10) graphics APIs or hardware.. The goal of our paper is to provide a solution that can be implemented on current generation GPUs as well game consoles. For games and other interactive applications, the solution must satisfy the following requirements. First, the data size should be small and the reconstruction quality must be good. Second, the decompression must be efficient; in particular, bilinear/trilinear/anisotropic texture filtering ought to be performed via native texture hardware instead of custom pixel shader filtering.. One possibility is to encode a HDR image into a shared exponent format, RGBE [Ward 1994 ], via RGBA8 format on current graphics hardware. However, since it is incorrect to linearly interpolate exponent values in the A channel, we will have to perform texture filtering via custom shader code. A similar format employed in the game developer community is RGBS [Green and McTaggart 2006] where the A channel is interpreted as a scaling (hence the acronym S) factor of the RGB channels. Similar to RGBE, this format does not support direct filtering even though it is used as a render target only.. In this paper, we perform extensive study and comparison of potential methods for supporting compressed HDR textures on programmable graphics hardware. Our solution represents an input HDR image with a pair of DXT5 textures. Since DXT is widely supported on commodity graphics hardware, our decompressor can be implemented as a pixel program without any hardware modification. For HDR RGB textures in 16-bit floating point formats, we obtain a 3:1 compression ratio, meaning that applications utilizing our technique can store 3 times the amount of HDR textures with the same amount of memory. This is achieved without major perceptual quality degradation, as rendering results using our technique visually match those rendered from original sources. We present a novel encoding scheme to allow native DXT texture hardware filtering without the need to simulate trilinear or anisotropic filtering by fetching multiple samples in a fragment program. Even more importantly, our technique runs faster than rendering from uncompressed HDR textures due to reduced texture memory traffic.. Since both desktop and mobile GPUs as well as modern consoles (e.g. PS3 and XBOX360) all support DXT but not HDR compression, we believe our technique provides significant benefit for many graphics applications. Despite proposals for future hardware design [Munkberg et al. 2006; Roimela et al. 2006] , current generation GPUs do not provide adequate support for compressed HDR textures. We provide a solution to address this issue. Our algorithm can be implemented on DX9 graphics hardware, has high reconstruction quality, and runs efficiently due to a simple and fast pixel shader and native hardware texture filtering. Our compression ratio is 3:1; even though lower than that offered by novel hardware [Munkberg et al. 2006; Roimela et al. 2006] , this still offers a significant boost for games and interactive applications which are often texture intensive. Finally, supporting HDR on DX9 GPUs can be considered a constrained design and optimization problem; we expose our decision process to demonstrate how we have come up with our final design.. For future work, we plan to extend our algorithm to alternative texture formats available in DX10 and XBOX360. In particular, DX10 and XBOX360 both support textures that are two DXT5 alpha blocks (8bpp) and DX10 has a format that is a single channel DXT5 alpha block (4bpp Furthermore, due to the commutability of linear operations, it is easy to show that (1) performing reconstruction via Equation 4 followed by trilinear interpolation is equivalent to (2) performing trilinear interpolation of tex0.a/tex1.a values followed by reconstruction via Equation 4. Since in (2) the trilinear interpolation of tex0.a/tex1.a can be accomplished in texturing hardware, our encoding satisfies the native filtering requirement. HDR Tone Mapping Significant research has been conducted in converting a HDR image into a LDR one so that it can be displayed on LDR devices [Li et al. 2005; Goodnight et al. 2003; Reinhard et al. 2005; Ward and Simmons 2004] . However, these techniques are mainly designed for dynamic range reduction (i.e. tone mapping), a non-reversible process, not for data size reduction while attempting to preserve original dynamic range. OpenEXR [Industrial Light & Magic 2003 ] is a popular format for encoding HDR images in the film industry. However, it focuses on quality but not efficient decoding, which is crucial for real-time applications. In addition to tone mapping, [Li et al. 2005] can also be utilized as a compression technique; however, its complexity makes GPU implementation infeasible. Utilizing compression standards, [Mantiuk et al. 2004] compresses HDR videos via MPEG4 while [Xu et al. 2005] compresses HDR images via JPEG 2000; due to the variable-rate nature of MPEG and JPEG, these techniques cannot be easily implemented on graphics hardware.

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