# Graph Theory and Computational Complexity

[![CC0](https://img.shields.io/badge/License-CC0-lightgrey.svg)](https://creativecommons.org/publicdomain/zero/1.0/)
[![C code](https://img.shields.io/badge/code-C-blue)](./code/c)
[![Zig code](https://img.shields.io/badge/code-Zig-orange)](./code/zig)
[![Run on Repl.it](https://repl.it/badge/github/storopoli/grafos-complexidade)](https://repl.it/github/storopoli/grafos-complexidade)
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/storopoli/grafos-complexidade)

> [!NOTE]
>
> For the Portuguese version, check out the [README-pt.md](README-pt.md).
>
> Para a versão em português, confira o [README-pt.md](README-pt.md).

<!-- markdownlint-disable no-inline-html -->
<div class="figure" style="text-align: center">
  <img src="slides/images/algorithm_analysis_meme.jpg"
   alt="Algorithm meme" width="500" />
</div>
<!-- markdownlint-enable no-inline-html -->

## Contents

1. Why study Graph Theory and Computational Complexity?;
1. Graphs, Paths, and Cycles;
1. Trees;
1. Computational Complexity;
1. P, NP-Complete, and NP-Hard Problems.
1. Algorithm Analysis;
1. Search and Sorting Algorithms;
1. Recursion;
1. Divide and Conquer; and
1. Greedy Algorithms.

## Code Examples

The primary programming language used for examples is C.
Also there are [Zig](https://ziglang.org) examples.
Check them at `code/c/` and `code/zig/` directories, respectively.

## Dependencies

- C/C++ Compiler;
- (Optional) [Zig](https://ziglang.org) compiler; and
- [`typst`](https://typst.app) for the slides.

The slides are generated using [Typst](https://typst.app) with GitHub Actions
and can be found in the
[`latest version`](https://github.com/storopoli/graphs-complexity/releases/latest/download/slides.pdf).

## License

This content is licensed under a
[Creative Commons Public Domain CC0 1.0 License](https://creativecommons.org/publicdomain/zero/1.0/).

[![CC0](https://licensebuttons.net/l/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)
