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:
Hướng dẫn Java Design Pattern – Adapter
Java Program to implement Dynamic Array
@Lookup Annotation in Spring
Java Program to Implement Double Order Traversal of a Binary Tree
Java Program to Show the Duality Transformation of Line and Point
Java Program to Implement Rolling Hash
Convert String to Byte Array and Reverse in Java
Setting a Request Timeout for a Spring REST API
Introduction to Spring Data MongoDB
Merging Two Maps with Java 8
Java Copy Constructor
Guide to the Fork/Join Framework in Java
Java Program to Implement ArrayDeque API
Spring Boot - Admin Client
Một số nguyên tắc, định luật trong lập trình
Java Program to Implement the String Search Algorithm for Short Text Sizes
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
Spring Boot - Quick Start
Java Program to Perform Sorting Using B-Tree
Guava – Join and Split Collections
How to Break from Java Stream forEach
Convert Time to Milliseconds in Java
Java Program to Perform Finite State Automaton based Search
REST Pagination in Spring
File Upload with Spring MVC
Easy Ways to Write a Java InputStream to an OutputStream
Bootstrap a Web Application with Spring 5
Spring Boot Tutorial – Bootstrap a Simple Application
Giới thiệu Design Patterns
Composition, Aggregation, and Association in Java
Java 14 Record Keyword
Java Program to Find Transpose of a Graph Matrix