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 Find the Longest Subsequence Common to All Sequences in a Set of Sequences
Guide to PriorityBlockingQueue in Java
Functional Interfaces in Java 8
Apache Tiles Integration with Spring MVC
Functional Interface trong Java 8
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Hướng dẫn Java Design Pattern – Composite
Java Program to Find Inverse of a Matrix
Hướng dẫn Java Design Pattern – Transfer Object
JWT – Token-based Authentication trong Jersey 2.x
Guide to Guava Table
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Java Optional as Return Type
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
Hướng dẫn Java Design Pattern – MVC
Java Program to Implement Binary Heap
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Spring Boot - Scheduling
Collection trong java
Spring Security Remember Me
Using Spring @ResponseStatus to Set HTTP Status Code
Guide to UUID in Java
Guide to Java OutputStream
Java Program to Implement LinkedHashSet API
Spring Cloud – Adding Angular
Hashtable trong java
Error Handling for REST with Spring
Java Program to Describe the Representation of Graph using Adjacency Matrix
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect