Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BELLMAN FORD
import java.util.*;
import java.lang.*;
import java.io.IOException;
public class BF
{
private int dis[];
private int nv;
public static final int MAX = 999;
public BF(int nv)
{
this.nv=nv;
dis=new int[nv+1];
}
public void bfe(int s,int adj[][])
{
for(int n=1;n<=nv;n++)
dis[n]=MAX;
dis[s]=0;
try
{
Thread.sleep(1000);
/*//TimeUnit.SECONDS.sleep(100);*/
}catch(InterruptedException c){ }
for(int n=1;n<=nv-1;n++)
{
for(int sn=1;sn<=nv;sn++)
{
for(int dn=1;dn<=nv;dn++)
{
if(adj[sn][dn]!=MAX)
{
if(dis[dn]>dis[sn]+adj[sn][dn])
dis[dn]=dis[sn]+adj[sn][dn];
}
}
}
}
for(int sn=1;sn<=nv;sn++)
{
for(int dn=1;dn<=nv;dn++)
{
if(adj[sn][dn]!=MAX)
{
if(dis[dn]>dis[sn]+adj[sn][dn])
System.out.println("graph contains
negative edge cycles");
}
}
}
for(int v=1;v<=nv;v++)
{
System.out.println("dis of source" + s + "to" + v + "is" + dis[v]);
}
}
public static void main(String[] args) throws IOException
{
int nv;
int s,sn,dn;
Scanner scanner = new Scanner(System.in);
System.out.println("enter number of vertices");
nv=scanner.nextInt();
int adj [ ][ ] = new int[nv+1][nv+1];
System.out.println("enter adj matrix");
for(sn=1;sn<=nv;sn++)
{
for(dn=1;dn<=nv;dn++)
{
adj [sn][dn]=scanner.nextInt();
/*if(adj[sn][dn]==0)
adj[sn][dn]=MAX;*/
}
}
System.out.println("enter source vertex");
s=scanner.nextInt();
long stime=System.nanoTime();
System.out.println("\nstarting time ="+(stime));
BF bf=new BF(nv);
try
{
Thread.sleep(1000);
/*//TimeUnit.SECONDS.sleep(100);*/
}catch(InterruptedException c){ }
bf.bfe(s,adj);
long etime=System.nanoTime();
System.out.println("\nending time ="+(etime));
System.out.println("\ntime taken="+((etime-stime)/10000));
scanner.close();
}
}
Output:
enter number of vertices
5
enter adj matrix
0 3 999 5 3
999 0 6 2 999
999 999 0 999 2
999 1 4 0 6
999 999 7 999 0
enter source vertex
1
starting time =539392514225
dis of source1to1is0
dis of source1to2is3
dis of source1to3is9
dis of source1to4is5
dis of source1to5is3
ending time =541442572375
time taken=205005
2. MONTE CARLO
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Random;
import java.io.IOException;
import java.util.Scanner;
public class MillerRabin
{
MillerRabin(int number)
{
boolean n=isprime(number);
if (n== true)
System.out.println("prime");
else
System.out.println("not prime");
}
Output:
enter number
787
starting time =1220556504361
prime
ending time =1220556798294
time taken=29
3. NAVE
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.*;
public class na
{
public na(String text,String pat)
{
int f=0;
int n=text.length();
int m=pat.length();
for (int i=0;i<=n-m;i++)
{
int j;
for(j=0;j<m;j++)
{
if(text.charAt(i+j) != pat.charAt(j))
break;
}
if(j==m)
{
f=1;
System.out.println("pat found at index" + i );
}
}
if(f==0)
System.out.println("Pattern not Found");
}
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter text");
String text = br.readLine();
System.out.println("enter pattern");
String pattern = br.readLine();
long stime=System.nanoTime();
System.out.println("\nstarting time ="+(stime)+" ns");
na n=new na(text,pattern);
long etime=System.nanoTime();
System.out.println("\nending time ="+(etime)+" ns");
System.out.println("\ntime taken="+((etime-stime))+" ns");
}
}
Output:
enter text
hello welcome to DAA lab
enter pattern
lo
starting time =2071181110517 ns
pat found at index3
ending time =2071181430724 ns
time taken=320207 ns
4.DFA
package ujyg;
import java.util.Scanner;
public class SearchStringUsingDFA
{
public static final int NO_OF_CHARS = 256;
public static int getNextState(char[] pat, int M, int state, int x)
{
if (state < M && x == pat[state])
return state + 1;
int ns, i;
int M = pat.length;
int N = txt.length;
int[][] TF = new int[M + 1][NO_OF_CHARS];
computeTF(pat, M, TF);
int i, state = 0;
for (i = 0; i < N; i++)
{
state = TF[state][txt[i]];
if (state == M)
{
System.out.print(pat);
System.out.print(" found at " + (i - M + 1));
}
}
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the main string: ");
String main = sc.nextLine();
System.out.println("Enter the pattern string: ");
String pattern = sc.nextLine();
search(pattern.toCharArray(), main.toCharArray());
sc.close();
}
}
Output:
Enter the main string:
DAA lab is too BAD
Enter the pattern string:
BAD
BAD found at 15
5.RABIN KARP
import java.io.*;
import java.math.BigInteger;
import java.util.Random;
import java.util.Scanner;
public class RK
{
private String pat;
private long pathash;
private int m;
private long q;
private int r;
private long rm;
public RK(int r,String pat)
{
throw new UnsupportedOperationException("operation not supported
yet");
}
public RK(String pat)
{
this.pat=pat;
r=256;
m=pat.length();
q=lrp();
rm=1;
for(int i=1;i<=m-1;i++)
rm=(r*rm)%q;
pathash=hash(pat,m);
}
private long hash(String key,int m)
{
long h=0;
for(int j=0;j<m;j++)
h=(r*h+key.charAt(j))%q;
return h;
}
private boolean chk(String text,int i)
{
for(int j=0;j<m;j++)
if(pat.charAt(j) != text.charAt(i+j))
return false;
return true;
}
private boolean chk(int i)
{
return true;
}
public int search(String text)
{
int n=text.length();
if(n<m)
return n;
long txthash=hash(text,m);
if((pathash == txthash) && chk(text,0))
return 0;
for(int i=m;i<n;i++)
{
txthash=(txthash+q-rm*text.charAt(i-m)%q)%q;
txthash=(txthash*r+text.charAt(i))%q;
int offset=i-m+1;
if((pathash == txthash) && chk(text,offset))
return offset;
}
return n;
}
private static long lrp()
{
BigInteger prime=BigInteger.probablePrime(31,new Random());
return prime.longValue();
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter the main string: ");
String text = sc.nextLine();
System.out.println("Enter the pattern string: ");
String pat = sc.nextLine();
long stime=System.nanoTime();
System.out.println("\nstarting time ="+(stime));
RK s=new RK(pat);
int offset=s.search(text);
System.out.println("text:
" + text);
System.out.print("pattern: ");
for(int i=0;i<offset;i++)
System.out.println(" ");
System.out.println(pat);
if(offset== text.length())
System.out.println("not found");
else
System.out.println("found at position" + offset);
long etime=System.nanoTime();
System.out.println("\nending time ="+(etime));
System.out.println("\ntime taken="+((etime-stime))+" ns");
}
}
Output:
Enter the pattern string:
shrilata
Enter the main string:
shri
starting time =2897947853527
text:
shrilata
pattern: shri
found at position0