# fn() longestCommonSubsequence
Computes the longest common subsequence.

Defined in | <seqan/graph_algorithms.h>
Signature | `void longestCommonSubsequence(str1, str2, nSize, pos);`

## Parameters

`str1` | An arbitrary ContainerConcept object.
`str2` | A second arbitrary ContainerConcept object.
`nSize` | The neighbourhood size to use.
`pos` | A String with pairs of positions that indicate the longest common subsequence.

## Detailed Description

### Example

    #include <iostream>
    #include <seqan/graph_algorithms.h>
    #include <seqan/graph_align.h>

    using namespace seqan;

    int main()
    {
        // Define two sequences.
        String<char> seq1("abacx");
        String<char> seq2("baabca");

        // Build a StringSet with two elements and an AlignmentGraph over them.
        typedef StringSet<String<char>, Dependent<> > TStringSet;
        TStringSet string_set;
        appendValue(string_set, seq1);
        appendValue(string_set, seq2);
        Graph<Alignment<TStringSet> > alignment_graph(string_set);

        // Compute the longest common subsequence.
        std::cout << "Score = " << globalAlignment(alignment_graph, stringSet(alignment_graph), Lcs()) << "\n"
                  << alignment_graph << std::endl;
        return 0;
    }

Demo: demos/dox/graph_algorithms/longest_common_subsequence.cpp

    Score = 3
    Alignment matrix:
          0     .
            aba--cx-
             ||  |
            -baabc-a

## Data Races

If not stated otherwise, concurrent invocation is not guaranteed to be thread-safe.

## See Also

- heaviestIncreasingSubsequence
- longestIncreasingSubsequence

#### Dox Sources

    /*!
     * @fn longestCommonSubsequence
     *
     * @headerfile <seqan/graph_algorithms.h>
     *
     * @brief Computes the longest common subsequence.
     *
     * @signature void longestCommonSubsequence(str1, str2, nSize, pos);
     *
     * @param[in] str1 An arbitrary @link ContainerConcept @endlink object.
     * @param[in] str2 A second arbitrary @link ContainerConcept @endlink object.
     * @param[in] nSize The neighbourhood size to use.
     * @param[out] pos A String with pairs of positions that indicate the longest
     *                 common subsequence.
     *
     * @section Example
     *
     * @include demos/dox/graph_algorithms/longest_common_subsequence.cpp
     *
     * @code{.console}
     * Score = 3
     * Alignment matrix:
     *       0     .
     *         aba--cx-
     *          ||  |
     *         -baabc-a
     * @endcode
     *
     *
     * @see heaviestIncreasingSubsequence
     * @see longestIncreasingSubsequence
     */