# Question:How to make the best use of known C libraries of graph theory, such as igraph, in maple?

## Question:How to make the best use of known C libraries of graph theory, such as igraph, in maple?

Maple 2021

I am trying to calculate the number of  complete subgraphs K4 of a graph. Based on some similar discussions, like following links,

I wrote the following codes:

```NumberOfK4:=proc(g::Graph)
local  n,N, i, j, k,l, g1,G1;
uses GraphTheory;
n:=NumberOfVertices(g);
g1 := RelabelVertices(g, [\$ i = 1..n]):
N:=0:
for i from 1 to n-3 do
for j from i+1 to n-2 do
for k from j+1 to n-1 do
for l from k+1 to n do
G1:=InducedSubgraph(g1,[i,j,k,l]);
if NumberOfEdges(G1)=6 then N:=N+1; fi;
od;
od;
od;
od;
N;
end proc:
with(GraphTheory): with(SpecialGraphs):
g:=CompleteGraph(5);
g1:=LineGraph(g);
NumberOfK4(g1)
```

5

I know the above codes are supposed to be inefficient in terms of speed. We want to improve this codes. One way I know  that is to take advantage of  the efficient graph theory programs such as igraph

Recently I learned how Maple calls external C programs.

The define_external command links in an externally defined function (for example, from a DLL under Windows, or from a shared library under UNIX), and produces a Maple procedure that acts as an interface to this external function.

From the help documentation, we need to compile the DLL files from the  source of C language. If it is a C program that does not need additional libraries, we can compile successfully, such as help documents

```    void mat_mult( double *A, double *B, double *C, int I, int J, int K )
{
int i, j, k;
double t;
for( i = 0; i < I; ++i )
for( k = 0; k < K; ++k ) {
t = 0.0;
for( j = 0; j < J; ++j )
t += A[i*J+j] * B[j*K+k];
C[i*K+k] = t;
}
}
```

No offense, maple has relatively few functions on graph theory so far, while Sage has a strong advantage because of its ability to integrate open network resources. I think sage is considered better for graph theory researchers because of this.

I don't know if Maple has any guidance on integrating a publicly available  graph theory library ,such as igraph .

Where is the difficulty of using the written source code？ And my computer system is Windows 10 , are there any special requirements. If Maple does this better, it might be a wonderful thing for graph theorists. ﻿