The main topics of my research is the speeding up of algorithms, especially discrete
algorithms. I want to clarify what techniques are efficient in reducing the time
complexities of algorithms. In addition, I want to develop some general techniques and
clarify the structures of fast discrete algorithms. I have examined some kinds of
problems, which are enumeration, tree locations, and meta-heuristics. I have researched
what techniques are to solve these problems, and got several results. Using the obtained
results, I will study problems and algorithms used in other scientific areas, and
in real world applications, especially focusing on optimization algorithms for
solving problems appearing in companies.

Recently, there have been a number of studies on optimization algorithms. Many problems
have been solved by using efficient algorithms, hence the question "What techniques
are efficient for each problem" has been answered in many fields. However, little is
known about "Which algorithms can be speeded up in efficient by what technique",
which are from the point view of algorithmic aspects. I plan to research
optimizations and algorithms from an algorithmic point of view, especially enumerations,
tree locations, and meta-heuristics.

In the following, for each topic, I explain my position, my goal, and the current
status of my research.

Enumeration Algorithms

Enumeration algorithms are used for solving enumeration problems. Enumeration problems
are problems of outputting ( or finding ) all elements in a given set, for example, the
spanning trees of a graph, the vertices of a polytope given by linear inequations, and the
subsets of given numbers such that the sum of the numbers in each subset is not greater
than a given constant.

Enumeration is a fundamental problem. It is considered for numerous objects of
fundamental combinatorial theory and graph theory, such as feasible solutions of
combinatorial optimizations, elements of subset families, and facets of combinatorial
polytopes. In investigating the properties of subset families, combinatorial polytopes,
and optimizations, enumeration is a basic and powerful tool. Several algorithms including
branch and bound are based on enumeration. When we study optimization algorithms such as
branch and bound, if we have many results on enumerations, then what we have to do is to
refer the literatures. Hence studies on enumerations help the study of combinatorial
algorithms.

Up to date, a number of enumeration algorithms have been proposed for various
enumeration problems. Several construction schemes for enumeration algorithms have also
been proposed. Almost all enumeration algorithms are based on these construction schemes.
Using these schemes, the frameworks of enumeration algorithms can be explained quite
simply. On the other hand, there have been studies that do not use such schemes to solve
complicated ( or minor ) problems. If enumeration is to be a good tool in other scientific
areas, enumeration algorithms should be written in a simple form, thereby should be
based on such construction schemes. Also they algorithmic properties should be classified
from the view points of the algorithmic aspects.

The computation time of enumeration algorithms varies greatly. The average
computation time per output of fast algorithms is small ( polynomial of input size ), and
that of slow algorithms is large ( exponential of input sizes ). The former are called
output linear time or polynomial delay. It is easy to construct an algorithm of the latter
group of algorithms for a combinatorial enumeration problem: generate all the
combinations, and check the feasibility of each combination. Hence, finding an output
linear algorithm for an enumeration problem is a good and interesting topic in the study
of enumeration. In fact, research in this area has been going on for the past 40 years,
and almost all interesting ( or important ) problems have been investigated extensively,
i.e., output linear algorithms have been proposed for almost all such problems, except for
several difficult problems.

From the view point of speeding up algorithms, which is my research topic, the study on
enumeration algorithms has two interesting problems. One is finding a practical fast
algorithm for difficult enumeration problems. There are several enumeration problems to
solve which simple algorithms take quite long time while more sophisticated algorithms
with not small time complexity runs in quite short time in practice. I studied the
enumeration problem of minimal set coverings ( hypergraph dualization ) , and implemented
a practical fast algorithm, which is much faster than naive algorithms. I intended to
investigate "what kind of problems can be solved faster by what techniques."

The second problem is the problem of how much we can speed up output linear enumeration
algorithms, i.e., how much can we decrease the time complexity per output. In the studies
on text algorithms and graph algorithms, the problem of reducing the time complexity has
been investigated extensively. Although the techniques developed in such algorithms can
also be applied to enumeration algorithms, the performance is not so good. While graph
algorithms are constructed to find a ( small number of ) solution(s), enumeration
algorithms are constructed to find quite many solutions. Techniques and analysis for graph
algorithms are specific to former algorithms, thus enumeration algorithms requires
original techniques and analysis specific to them. There are several cases that techniques
not working well for graph algorithms work well for enumeration algorithms. This is
interesting.

Algorithms with small time complexities tend to be complicated and slow in practice.
However, by investigating the structures of these algorithms, we can see "If *several
conditions* hold, then the computation time decreases." From this, we can deduce that
"probably, algorithms satisfying the most part of these *several conditions* are
fast." By constructing simple algorithm satisfying these conditions as possible, we
can obtain simple and practically fast algorithms.

I will research this problem to get general knowledge about of theoretical and
practical techniques for speeding up enumeration algorithms.

My research has resulted in speeding up approximately ten interesting ( or important )
subgraph enumeration algorithms ( for example, spanning trees, and matchings ) by reducing
their time complexity. I also proposed a general scheme called "Trimming and
Balancing" for speeding up enumeration algorithms. Using this scheme, several
algorithms that could not be speeded up with existing techniques were speeded up. I will
study to what kind of enumeration algorithms, Trimming and Balancing is applicable, and
will investigate what the common properties of these improved algorithms are.

Tree Algorithms

Tree algorithms are algorithms for solving problems, especially optimization problems,
of tree shaped networks. Many NP-hard problems of general networks are polynomial solvable
on tree networks, since tree networks are quite simple, and many schemes including
divide-and-conquer, dynamic programming, bottom-up, and top-down ones, work efficiently on
tree networks.

Studies on tree algorithms have a long history. A number of problems have been
considered, and a number of polynomial algorithms have been proposed. Hence, almost all
interesting ( or important ) problems which appear in practice or as subproblems of other
combinatorial optimizations have been studied completely. However, there have been few
studies on the algorithmic properties of tree algorithms. That is, many studies have
proposed tree algorithms to solve their problems, yet few have examined the properties of
tree algorithms themselves. Because there are many studies on the former kind, algorithms
with the same structure and similar properties appear frequently. These algorithms should
be considered as minor ( or modified ) versions of basic algorithms. They should also be
classified by their algorithmic properties.

If techniques and knowledges about tree algorithms, such as basic construction schemes
of tree algorithms, methods of complexity analysis, properties of problems, constraints,
and objective functions, are assorted and classified, then we could easily investigate
algorithms when we encounter new tree location problems, by investigating several
properties of the problems, and refer the techniques and knowledges. Such classification
of basic algorithms will also help in designing programs.

In my study, I propose a linear time, i.e. optimal, algorithm for finding a k-tree core
of a tree network. A paper of this research is published. Although using techniques
obtained in my research, I found that several kinds of ( minor ) tree network optimization
problems can be solved faster than the existing ways, I thought that such a minor study
had to be ad hoc, so I did not submit these result to journals. Recently, I have the above
opinion. Now, I am investigating general basic algorithms and how to apply the algorithms
to those minor problems in a simple way.

Approximation Algorithms / Meta
Heuristics

Recently, approximation algorithms and meta heuristics have been intensively studied to
solve large scale combinatorial optimizations. Studies on "efficiency of each method
( local search, tabu search, genetic algorithms, etc. ) for each problem" have also
been doing. In those studies, the performance in a limited time of each method are tested,
but the implementations are often naive. If we use several sophisticated techniques to
speed up, the performance will change. Studies of algorithms can increase the performance
of approximations and heuristics. I think, each method should be tested with high-level
implementations and algorithmic techniques, otherwise, we will not be able to compare the
efficiency of different method.

Meta heuristics can solve ( find a "not bad" solution to be exact ) large
scale problems. However, they are not designed to solve in a few minutes, or solve quite
large problems. Because of recent progress in information technology, we often need to
solve problems in a matter of minutes. For such problems, several new techniques are
required, for example, to reduce the number of unnecessary operations without a large loss
of efficiency, and to search only areas where the possibility of of existing good
solutions is high. In practice, not bad solutions obtained in a short period of time are
preferable to good or optimal solutions taking too long time. I believe that research in
this area extends the study of optimizations, operations researches and algorithms to
practical area.

Among studies on meta heuristics, few have addressed the speeding up iterations. For
simulated annealings, an iteration takes constant time, so this kind of study makes no
sense. On the other hand, in local searches and tabu searchs, an iteration takes much time
especially if we are dealing large scale neighborhood. Operations of each iteration is
quite similar, hence this will be a good application of dynamic data structures. I already
researched local searches of traveling salesman problems, bin-packings and scheduling
problems, and found that iterations of them can be speeded up by using several techniques
arising from dynamic data structures. I will study this problem in detail, will report my
results.

Communication with researchers
in other scientific areas and companies

Recent progress on combinatorial optimizations research has enables solving large scale
and complicated problems. The progress in operations research has enabled us to deal with
problems with which we could not deal in mathematical ways 10 years ago. Thus, problems
appearing in other scientific areas including physics, chemicals, bioinformatics, and
social sciences, can be considered mathematical problems, and can be solved efficiently.
Example of such problems include optimizing materials in architectonics, finding
similarity of two DNAs, definition of values and powers of groups, natures, and
organizations in social sciences, finding typical properties, shapes, and groups of large
scale networks.

I think that at present, optimization algorithms in the above areas have been not
intensively studied. This is natural to consider that there are great possibilities to
develop in those problems by introducing recent technologies of operations research and
algorithms. Usually, such problems could not be solved with only basic techniques
described in textbooks. Several "plus alpha's" are required. To find a simple
"plus alpha," skills and experience of the researches on operations research and
algorithms will do a great job. I want to communicate with researchers in other scientific
areas to continue my study on applications of algorithms.