Skip to content

AssTorry/Tasks-for-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задача о перколяции

С задачей о перколяции можно встретить в разных областях науки: при анализе зависимости проводимости тонких композитных пленок от соотношения концентраций металла и диэлектрика в составе пленок; при определение связности компьютерных сетей; при определении условий просачивания жидкостей через пористую поверхность. Чтобы формально описать задачу перколяции рассматривают модель на основе квадратной решетки.

Модель

Рассмотрим решетку n клеток на n клеток. Каждая клетка решетки может быть открыта или заблокирована. Полной клеткой называется клетка, которая соединена с открытой клеткой, находящейся в верхнем ряду клеток через цеполчку соседей, которые являются открытыми клетками и находятся сверху, снизу, слева и справа (т.е. соседние клетки имеют общую границу). Говорят, что в решетке есть перколяционный кластер, если есть полная клетка в нижнем ряду решетки. Если говорить менее формально, то система будет протекать если существует полная клетка в нижнем ряду решетки.

Проблема

Давайте считать, что каждая клетка с некоторой вероятностью p открыта или занята (независимо от клеток соседей). С какой вероятностью система будет протекать? Очевидно, что если p = 0, то система точно не протекает, если p = 1, то система протекает. Вот пример того, как изменяется вероятность протекания системы в зависимоти от выбранного значения p для решеток 20x20 (слева) и 100x100 (справа):

Если мы будем смотреть на достаточно больше решетки, то найдем такое значение p* что при p < p* произвольная система, почти всегда, не протекает и при p > p* почти всегда протекает. Вам требуется написать программу, которая поможет найти значение p* которое является порогом перколяции. Вам потребуется реализовать интерфейс Percolation.

Метод Монте-Карло

Чтобы найти порог перколяции p* выполните следующие шаги:

  1. Создайте решетку, где все клетки заблокированы
  2. Повторяйте шаги из этого пункта до тех пор, пока система не начнет протекать
    1. Среди всех заблокированных ячеев выирайте случайную ячейку (используйте равномерное распределение)
    2. Сделайте эту ячейку открытой
  3. Соотношение открытых и заблокированных ячеек дает оценку для порога перколяции.

Вам потребуется реализовать интерфейс PercolationStats.

Перед началом убедиться, что проект запускается :

Зайди в Main - если все ок, то должна появиться зеленая стрелочка возле public static void main(String[] arg){

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages