This is a Java Program to Implement Brent Cycle Algorithm. Cycle detection is the algorithmic problem of finding a cycle in a sequence of iterated function values. Brent Cycle Algorithm is an alternative cycle detection algorithm that, like the tortoise and hare algorithm, requires only two pointers into the sequence.
Here is the source code of the Java Program to Implement Brent Cycle Algorithm . The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to Implement Brent Cycle Algorithm **/ import java.util.Scanner; import java.util.List; import java.util.ArrayList; /** Class BrentCycle **/ public class BrentCycle { private List<Integer> func; private int lam, mu; /** Constructor **/ public BrentCycle(List<Integer> list, int x0) { func = list; /** print sequence **/ printSequence(x0); /** find cycle **/ findCycle(x0); /** display results **/ display(); } /** function to find cycle **/ private void findCycle(int x0) { int power, lam; power = lam = 1; int tortoise = x0; int hare = f(x0); while (tortoise != hare) { if (power == lam) { tortoise = hare; power *= 2; lam = 0; } hare = f(hare); lam += 1; } mu = 0; tortoise = hare = x0; for (int i = 0; i < lam; i++) { hare = f(hare); } while (tortoise != hare) { tortoise = f(tortoise); hare = f(hare); mu += 1; } this.lam = lam; this.mu = mu; } /** function to return value of function f(x) **/ private int f(int p) { return func.get(p); } /** function to print first n sequence **/ public void printSequence(int x0) { int n = func.size(); int tempx = x0; System.out.print("\nFirst "+ n +" elements in sequence : \n"+ tempx); for (int i = 0; i < n; i++) { tempx = f(tempx); System.out.print(" "+ tempx); } System.out.println(); } /** function to display results **/ public void display() { System.out.println("\nLength of cycle : "+ lam); System.out.println("Position : "+ (mu + 1)); } /** Main function **/ public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Brent Cycle Algorithm Test\n"); System.out.println("Enter size of list"); int n = scan.nextInt(); List<Integer> list = new ArrayList<Integer>(); System.out.println("\nEnter f(x)"); for (int i = 0; i < n; i++) list.add(scan.nextInt()); System.out.println("\nEnter x0"); int x0 = scan.nextInt(); BrentCycle bc = new BrentCycle(list, x0); } }
Brent Cycle Algorithm Test Enter size of list 9 Enter f(x) 6 6 0 1 4 3 3 4 2 Enter x0 8 First 9 elements in sequence : 8 2 0 6 3 1 6 3 1 6 Length of cycle : 3 Position : 4
Related posts:
Java Program to Perform Searching in a 2-Dimension K-D Tree
Working With Maps Using Streams
Tính đóng gói (Encapsulation) trong java
Custom Exception trong Java
Java Program to Implement Levenshtein Distance Computing Algorithm
Retrieve User Information in Spring Security
Queue và PriorityQueue trong Java
Limiting Query Results with JPA and Spring Data JPA
Spring Cloud – Adding Angular
Java Program to Generate Random Hexadecimal Byte
Allow user:password in URL
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Inject Parameters into JUnit Jupiter Unit Tests
Java Program to Implement Segment Tree
Static Content in Spring WebFlux
Concatenating Strings In Java
Java Program to Find Strongly Connected Components in Graphs
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Netflix Archaius with Various Database Configurations
Hướng dẫn Java Design Pattern – Iterator
Java Program to Implement Hash Tables with Quadratic Probing
Examine the internal DNS cache
Hướng dẫn Java Design Pattern – Null Object
How to Get the Last Element of a Stream in Java?
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Spring Boot - Service Components
Java Program to Create a Balanced Binary Tree of the Incoming Data
Dockerizing a Spring Boot Application
Guide to BufferedReader
Java TreeMap vs HashMap
Converting a Stack Trace to a String in Java