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:
Using Spring ResponseEntity to Manipulate the HTTP Response
Handling Errors in Spring WebFlux
Java IO vs NIO
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
Chuyển đổi Array sang ArrayList và ngược lại
The Dining Philosophers Problem in Java
OAuth 2.0 Resource Server With Spring Security 5
Recommended Package Structure of a Spring Boot Project
Giới thiệu HATEOAS
Java Program to Perform Sorting Using B-Tree
Spring Boot - Runners
Java Program to Implement LinkedTransferQueue API
Java Program to Implement Doubly Linked List
Java Multi-line String
A Guide to Queries in Spring Data MongoDB
Java Program to Implement LinkedHashSet API
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Java Program to Implement ArrayList API
Giới thiệu về Stream API trong Java 8
Function trong Java 8
Spring Boot - Quick Start
Injecting Prototype Beans into a Singleton Instance in Spring
MyBatis with Spring
How to Get a Name of a Method Being Executed?
Kết hợp Java Reflection và Java Annotations
Testing an OAuth Secured API with Spring MVC
Java Program to Implement Sorted Singly Linked List
Redirect to Different Pages after Login with Spring Security
Spring Boot - Servlet Filter
Java Program to Perform Stooge Sort
Tạo chương trình Java đầu tiên sử dụng Eclipse
How to Convert List to Map in Java