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:
Giới thiệu SOAP UI và thực hiện test Web Service
Jackson Date
Spring Security – Reset Your Password
Spring Data MongoDB Transactions
Java Program to Perform Partial Key Search in a K-D Tree
Login For a Spring Web App – Error Handling and Localization
How to Read a Large File Efficiently with Java
Spring Boot - Apache Kafka
Spring NoSuchBeanDefinitionException
Java Program to Implement AVL Tree
Composition, Aggregation, and Association in Java
Jackson vs Gson
Introduction to Project Reactor Bus
Spring WebClient Requests with Parameters
Truyền giá trị và tham chiếu trong java
Java Program to Find Number of Articulation points in a Graph
Java Program to Check if it is a Sparse Matrix
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Custom JUnit 4 Test Runners
Spring MVC and the @ModelAttribute Annotation
How to Read HTTP Headers in Spring REST Controllers
Java Program to Find kth Largest Element in a Sequence
String Processing with Apache Commons Lang 3
Java Program to Implement Sorted Array
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Java Program to Find Transitive Closure of a Graph
ETL with Spring Cloud Data Flow
Java Program to Implement Shoelace Algorithm
Java Program to Implement ConcurrentSkipListMap API
Reading an HTTP Response Body as a String in Java
Explain about URL and HTTPS protocol
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree