%function [G] = RegularNetwork(nv, k)
function [G] = RegularNetwork(nv, k, p)
%[G] = RegularNetwork(10, 2, 0.2);
%[G] = RegularNetwork(1500, 2, 0.2) %fokszám eloszlás Poisson, egyre szélesebb minnél nagyobb az áthuzalozás
%   RegularNetwork metódus gráfgenerálásra használható
%
%   Bemeneti paraméterek:
%   nv      - csúcsok száma (vertices)
%   k       - fokszám
%   p       - átvezetékezés valószínûsége
%
%   Kimeneti paraméter egy G adatstruktúra a következõ elemekkel:
%   G.Adj   - a gráf szomszédsági mátrixa (1 - a két csúcs között van él, 0
%   - a két csúcs között nincs él
%   G.nv    - csúcsok száma (vertices)
%   G.ne    - élek száma (edges)

% létrehozzuk az alapmátrixot csupa nullával
A=zeros(nv,nv);

% k, a fokszám hibakezelése
k=fix(abs(k)/2);k=(k<1)+k;

for k_=1:k
    % hozzáadjuk az adott csúcshoz tartozó kis diagonálmátrixot
    A = A + diag(ones(1,length(diag(A,k_))), k_) ...
          + diag(ones(1,length(diag(A,nv-k_))), nv-k_);  
     % A
end
A = A + A';

G = struct('Adj', A, 'nv', nv, 'ne', nnz(A)/2);

%plotGraphBasic(G,3,1);
%plotKPk(G);

%p=0.2; %átvezetékezés valószínûsége
[G] = WSmodel(G, p);

