#### Loading

```
<script type="text/javascript">
<!--
document.write('<div id="oa_widget"></div>');
document.write('<script type="text/javascript" src="https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=corda_____he::ac7d2d5e9ad62df105518067df852316&type=result"></script>');
-->
</script>
```

__helpdesk@openaire.eu__

This is a project in Computational Complexity. The project aims to answer the following question: How hard is it to find a good algorithm for a given computational problem? This question can be asked in several different settings, depending on what one means by "algorithm" (what is the computational model?), "computational problem" (is it a decision problem? a search problem? a communication problem?), and by "good" (do we want an algorithm that uses little time? little memory? few logical gates?). This question has a deep connection with the problem of proving lower-bounds, and in almost every setting where the question has been answered, either the answer was discovered while attempting to prove lower-bounds, or obtaining the answer required the development of new lower-bound methods. It is also known that several variants of the above question are equivalent to fundamental open questions in cryptography, pseudorandomness, and learning theory. The goal of this project is to answer this question in various settings where the answer is unknown: in circuit complexity, communication complexity, data structures, and algebraic models of computation. For each of these settings, we will either provide explicit methods for finding efficient algorithms, or show that the problem of finding such efficient algorithms is NP-hard.

```
<script type="text/javascript">
<!--
document.write('<div id="oa_widget"></div>');
document.write('<script type="text/javascript" src="https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=corda_____he::ac7d2d5e9ad62df105518067df852316&type=result"></script>');
-->
</script>
```

__helpdesk@openaire.eu__