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:
Object cloning trong java
Hướng dẫn Java Design Pattern – Iterator
Hướng dẫn Java Design Pattern – Bridge
Java Program to Implement Coppersmith Freivald’s Algorithm
Hamcrest Collections Cookbook
Spring Boot Tutorial – Bootstrap a Simple Application
Quick Intro to Spring Cloud Configuration
Class Loaders in Java
Spring Boot - Build Systems
Constructor Injection in Spring with Lombok
Java Program to Implement EnumMap API
Java Program to Implement HashTable API
Java Program to Implement Hash Tables
Extract network card address
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Perform Finite State Automaton based Search
Object Type Casting in Java
Java Program to Check for balanced parenthesis by using Stacks
Sắp xếp trong Java 8
How to Implement Caching using Adonis.js 5
Different Ways to Capture Java Heap Dumps
How To Serialize and Deserialize Enums with Jackson
Hướng dẫn Java Design Pattern – Flyweight
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Introduction to the Java ArrayDeque
Java Program to Implement LinkedBlockingDeque API
Java Program to Implement Adjacency Matrix
Properties with Spring and Spring Boot
Java Program to Check Multiplicability of Two Matrices
Exploring the New Spring Cloud Gateway
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java Program to Implement Expression Tree