<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY igraph "igraph">
]>

<chapter id="igraph-Introduction">
<title>Introduction</title>

<para>
igraph is a library for creating and manipulating graphs.
You can look at it in two ways: first, igraph contains the implementation
of quite a lot of graph algorithms. These include classic graph
algorithms like graph isomorphism, graph girth and connectivity and
also the new wave graph algorithms like transitivity, graph motifs and
community structure detection. Skim through the table of contents
or the index of this book to get an impression of what is available.</para>

<para>
Second, igraph provides a platform for developing and/or
implementing graph algorithms. It has an efficient data structure
for representing graphs, and a number of other data structures like
flexible vectors, stacks, heaps, queues, adjacency lists that are useful for implementing graph algorithms. In fact these data structures evolved along with the
implementation of the classic and non-classic graph algorithms which
make up the major part of the igraph library. This way, they were fine-tuned
and checked for correctness several times.
</para>

<para>
Our main goal with developing igraph was to create a graph library
which is efficient on large, but not extremely large graphs. More
precisely, it is assumed that the graph(s) fit into the physical
memory of the computer. Nowadays this means graphs with
several million vertices and/or edges. Our definition of efficient is
that it runs fast, both in theory and (more importantly) in practice.
</para>

<para>
We believe that one of the big strengths of igraph is that it can be
embedded into a higher-level language or environment. Three such
embeddings (or interfaces if you look at them another way)
are currently being developed by us: an R
package, a Python extension module, and a Mathematica (Wolfram Language) package. Others are
likely to come. High level languages such as R or Python make it
possible to use graph routines with much greater comfort, without
actually writing a single line of C code. They have some, usually very
small, speed penalty compared to the C version, but add ease of use and much
flexibility. This manual, however, covers only the C library. If you
want to use Python, R or the Wolfram Language, please see the documentation written
specifically for these interfaces and come back here only if you are
interested in some detail which is not covered in those documents.
</para>

<para>
We still consider igraph as a child project. It has much room for
development and we are sure that it will improve a lot in the near
future. Any feedback we can get from the users is very important for
us, as most of the time these questions and comments guide us in what
to add and what to improve.
</para>

<para>
igraph is open source and distributed under the terms of the GNU GPL
version 2 or (at your option) any later version.
We strongly believe that all the algorithms used in science, let that
be graph theory or not, should have an efficient open-source
implementation allowing use and modification for anyone.
</para>

<section id="igraph-is-free-software"><title>&igraph; is free software</title>
<para>
    igraph library
</para><para>
    Copyright (C) 2003-2004  Gábor Csárdi &lt;csardi.gabor@gmail.com>
</para><para>
    Copyright (C) 2005-2019  Gábor Csárdi &lt;csardi.gabor@gmail.com> and Tamás Nepusz &lt;ntamas@gmail.com>
</para><para>
    Copyright (C) 2020-2023  The igraph development team
</para><para>
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
</para><para>
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
</para><para>
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc.
</para>
</section>

<section id="citing-igraph"><title>Citing &igraph;</title>
<para>
To cite &igraph; in publications, please use the following
reference:
</para><para>
Gábor Csárdi, Tamás Nepusz: The igraph software package for complex network
research. InterJournal Complex Systems, 1695, 2006.
</para><para>
The igraph C library is assigned the DOI <ulink url="https://doi.org/10.5281/zenodo.3630268">10.5281/zenodo.3630268</ulink> on Zenodo.
</para>

</section>

</chapter>
